summaryrefslogtreecommitdiffstats
path: root/roles/etcd/tasks/upgrade/upgrade_image.yml
diff options
context:
space:
mode:
authorJan Chaloupka <jchaloup@redhat.com>2017-09-19 09:44:37 +0200
committerJan Chaloupka <jchaloup@redhat.com>2017-09-21 16:47:01 +0200
commit2c8d16c36b8eec5c2a82fb5da7291736654e55f2 (patch)
tree538abc2a50573e3463ab5cd04aefaf2de8369db5 /roles/etcd/tasks/upgrade/upgrade_image.yml
parentaf580f808d78667bde54b88d4c33fca493828945 (diff)
downloadopenshift-2c8d16c36b8eec5c2a82fb5da7291736654e55f2.tar.gz
openshift-2c8d16c36b8eec5c2a82fb5da7291736654e55f2.tar.bz2
openshift-2c8d16c36b8eec5c2a82fb5da7291736654e55f2.tar.xz
openshift-2c8d16c36b8eec5c2a82fb5da7291736654e55f2.zip
consolidate etcd_upgrade role
Diffstat (limited to 'roles/etcd/tasks/upgrade/upgrade_image.yml')
-rw-r--r--roles/etcd/tasks/upgrade/upgrade_image.yml55
1 files changed, 55 insertions, 0 deletions
diff --git a/roles/etcd/tasks/upgrade/upgrade_image.yml b/roles/etcd/tasks/upgrade/upgrade_image.yml
new file mode 100644
index 000000000..cea95a1b3
--- /dev/null
+++ b/roles/etcd/tasks/upgrade/upgrade_image.yml
@@ -0,0 +1,55 @@
+---
+# INPUT r_etcd_upgrade_version
+- name: Verify cluster is healthy pre-upgrade
+ command: "{{ etcdctlv2 }} cluster-health"
+
+- name: Get current image
+ shell: "grep 'ExecStart=' {{ etcd_service_file }} | awk '{print $NF}'"
+ register: current_image
+
+- name: Set new_etcd_image
+ set_fact:
+ new_etcd_image: "{{ current_image.stdout | regex_replace('/etcd.*$','/etcd:' ~ r_etcd_upgrade_version ) }}"
+
+- name: Pull new etcd image
+ command: "docker pull {{ new_etcd_image }}"
+
+- name: Update to latest etcd image
+ replace:
+ dest: "{{ etcd_service_file }}"
+ regexp: "{{ current_image.stdout }}$"
+ replace: "{{ new_etcd_image }}"
+
+- name: Restart etcd_container
+ systemd:
+ name: "{{ etcd_service }}"
+ daemon_reload: yes
+ state: restarted
+
+## TODO: probably should just move this into the backup playbooks, also this
+## will fail on atomic host. We need to revisit how to do etcd backups there as
+## the container may be newer than etcdctl on the host. Assumes etcd3 obsoletes etcd (7.3.1)
+- name: Detecting Atomic Host Operating System
+ stat:
+ path: /run/ostree-booted
+ register: l_ostree_booted
+
+- name: Upgrade etcd for etcdctl when not atomic
+ package:
+ name: etcd
+ state: latest
+ when: not l_ostree_booted.stat.exists | bool
+
+- name: Verify cluster is healthy
+ command: "{{ etcdctlv2 }} cluster-health"
+ register: etcdctl
+ until: etcdctl.rc == 0
+ retries: 3
+ delay: 10
+
+- name: Store new etcd_image
+ # DEPENDENCY openshift_facts
+ openshift_facts:
+ role: etcd
+ local_facts:
+ etcd_image: "{{ new_etcd_image }}"