diff --git a/roles/etcd/tasks/install_docker.yml b/roles/etcd/tasks/install_docker.yml index 793946fab..025a0ba17 100644 --- a/roles/etcd/tasks/install_docker.yml +++ b/roles/etcd/tasks/install_docker.yml @@ -2,6 +2,30 @@ - import_tasks: install_etcdctl_docker.yml when: etcd_cluster_setup +- name: Get currently-deployed etcd version + shell: "{{ docker_bin_dir }}/docker ps --filter='name={{ etcd_member_name }}' --format='{{ '{{ .Image }}' }}'" + register: etcd_current_docker_image + when: etcd_cluster_setup + +- name: Get currently-deployed etcd-events version + shell: "{{ docker_bin_dir }}/docker ps --filter='name={{ etcd_member_name }}-events' --format='{{ '{{ .Image }}' }}'" + register: etcd_events_current_docker_image + when: etcd_events_cluster_setup + +- name: Restart etcd if necessary + command: /bin/true + notify: restart etcd + when: + - etcd_cluster_setup + - etcd_image_tag not in etcd_current_docker_image.stdout|default('') + +- name: Restart etcd-events if necessary + command: /bin/true + notify: restart etcd-events + when: + - etcd_events_cluster_setup + - etcd_image_tag not in etcd_events_current_docker_image.stdout|default('') + - name: Install etcd launch script template: src: etcd.j2 diff --git a/roles/etcd/tasks/install_host.yml b/roles/etcd/tasks/install_host.yml index 3196df5c6..14a75b48b 100644 --- a/roles/etcd/tasks/install_host.yml +++ b/roles/etcd/tasks/install_host.yml @@ -1,4 +1,25 @@ --- +- name: Get currently-deployed etcd version + command: "{{ bin_dir }}/etcd --version" + register: etcd_current_host_version + # There's a chance this play could run before etcd is installed at all + ignore_errors: true + when: etcd_cluster_setup + +- name: Restart etcd if necessary + command: /bin/true + notify: restart etcd + when: + - etcd_cluster_setup + - etcd_version.lstrip('v') not in etcd_current_host_version.stdout|default('') + +- name: Restart etcd-events if necessary + command: /bin/true + notify: restart etcd-events + when: + - etcd_events_cluster_setup + - etcd_version.lstrip('v') not in etcd_current_host_version.stdout|default('') + - name: install | Download etcd and etcdctl include_tasks: "../../download/tasks/download_file.yml" vars: diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml index 7256927e1..465be73fa 100644 --- a/roles/etcd/tasks/main.yml +++ b/roles/etcd/tasks/main.yml @@ -47,17 +47,13 @@ when: is_etcd_master - name: Restart etcd if certs changed - service: - name: etcd - state: restarted - enabled: yes + command: /bin/true + notify: restart etcd when: is_etcd_master and etcd_cluster_setup and etcd_secret_changed|default(false) - name: Restart etcd-events if certs changed - service: - name: etcd-events - state: restarted - enabled: yes + command: /bin/true + notify: restart etcd when: is_etcd_master and etcd_events_cluster_setup and etcd_secret_changed|default(false) # After etcd cluster is assembled, make sure that