summaryrefslogtreecommitdiffstats
path: root/playbooks/common
diff options
context:
space:
mode:
Diffstat (limited to 'playbooks/common')
-rw-r--r--playbooks/common/openshift-cluster/upgrades/etcd/containerized_tasks.yml39
l---------playbooks/common/openshift-cluster/upgrades/etcd/files/etcdctl.sh1
-rw-r--r--playbooks/common/openshift-cluster/upgrades/etcd/main.yml21
3 files changed, 55 insertions, 6 deletions
diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/containerized_tasks.yml b/playbooks/common/openshift-cluster/upgrades/etcd/containerized_tasks.yml
new file mode 100644
index 000000000..2cbe3b729
--- /dev/null
+++ b/playbooks/common/openshift-cluster/upgrades/etcd/containerized_tasks.yml
@@ -0,0 +1,39 @@
+---
+- name: Verify cluster is healthy pre-upgrade
+ command: "etcdctl --cert-file /etc/etcd/peer.crt --key-file /etc/etcd/peer.key --ca-file /etc/etcd/ca.crt -C https://{{ openshift.common.hostname }}:2379 cluster-health"
+
+- name: Update systemd unit
+ openshift_facts:
+ role: etcd
+
+- name: Set etcd3 image name
+ set_fact:
+ new_etcd_image: "{{ openshift.etcd.etcd_image | regex_replace('/etcd$','/etcd3') }}"
+
+- name: Pull new etcd image
+ command: "docker pull {{ new_etcd_image }}"
+
+- name: Update to latest etcd image
+ replace:
+ dest: /etc/systemd/system/etcd_container.service
+ regexp: "{{ openshift.etcd.etcd_image }}$"
+ replace: "{{ new_etcd_image }}"
+
+- name: Update etcd package not excluding etcd3
+ systemd:
+ name: etcd_container
+ daemon_reload: yes
+ state: restarted
+
+- name: Verify cluster is healthy
+ command: "etcdctl --cert-file /etc/etcd/peer.crt --key-file /etc/etcd/peer.key --ca-file /etc/etcd/ca.crt -C https://{{ openshift.common.hostname }}:2379 cluster-health"
+ register: etcdctl
+ until: etcdctl.rc == 0
+ retries: 3
+ delay: 10
+
+- name: Store new etcd_image
+ openshift_facts:
+ role: etcd
+ local_facts:
+ - etcd_image: "{{ new_etcd_image }}"
diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/files/etcdctl.sh b/playbooks/common/openshift-cluster/upgrades/etcd/files/etcdctl.sh
new file mode 120000
index 000000000..641e04e44
--- /dev/null
+++ b/playbooks/common/openshift-cluster/upgrades/etcd/files/etcdctl.sh
@@ -0,0 +1 @@
+../roles/etcd/files/etcdctl.sh \ No newline at end of file
diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/main.yml b/playbooks/common/openshift-cluster/upgrades/etcd/main.yml
index e1c092dbe..22af9e7e2 100644
--- a/playbooks/common/openshift-cluster/upgrades/etcd/main.yml
+++ b/playbooks/common/openshift-cluster/upgrades/etcd/main.yml
@@ -34,8 +34,10 @@
hosts: etcd_hosts_to_upgrade
tasks:
- name: Record etcd version
- command: rpm -q --qf '%{version}' etcd
+ command: rpm -qa --qf '%{version}' etcd\*
register: etcd_installed_version
+ failed_when: false
+ when: not openshift.common.is_containerized | bool
# I really dislike this copy/pasta but I wasn't able to find a way to get it to loop
# through hosts, then loop through tasks only when appropriate
@@ -46,7 +48,7 @@
upgrade_version: '2.1'
tasks:
- include: rhel_tasks.yml
- when: etcd_installed_version.stdout | version_compare('2.1','<') and ansible_distribution == 'RedHat'
+ when: etcd_installed_version.stdout | default('99') | version_compare('2.1','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool
- name: Upgrade to 2.2
hosts: etcd_hosts_to_upgrade
@@ -55,7 +57,7 @@
upgrade_version: '2.2'
tasks:
- include: rhel_tasks.yml
- when: etcd_installed_version.stdout | version_compare('2.2','<') and ansible_distribution == 'RedHat'
+ when: etcd_installed_version.stdout | default('99') | version_compare('2.2','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool
- name: Upgrade to 2.3
hosts: etcd_hosts_to_upgrade
@@ -64,7 +66,7 @@
upgrade_version: '2.3'
tasks:
- include: rhel_tasks.yml
- when: etcd_installed_version.stdout | version_compare('2.3','<') and ansible_distribution == 'RedHat'
+ when: etcd_installed_version.stdout | default('99') | version_compare('2.3','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool
- name: Upgrade to 3.0
hosts: etcd_hosts_to_upgrade
@@ -73,14 +75,21 @@
upgrade_version: '3.0'
tasks:
- include: rhel_tasks.yml
- when: etcd_installed_version.stdout | version_compare('3.0','<') and ansible_distribution == 'RedHat'
+ when: etcd_installed_version.stdout | default('99') | version_compare('3.0','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool
- name: Upgrade fedora to latest
hosts: etcd_hosts_to_upgrade
serial: 1
tasks:
- include: fedora_tasks.yml
- when: ansible_distribution == 'Fedora'
+ when: ansible_distribution == 'Fedora' and not openshift.common.is_containerized | bool
+
+- name: Upgrade containerized hosts to etcd3 image
+ hosts: etcd_hosts_to_upgrade
+ serial: 1
+ tasks:
+ - include: containerized_tasks.yml
+ when: openshift.common.is_containerized | bool
- name: Backup etcd
include: backup.yml