1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
---
- name: Determine etcd version
hosts: oo_etcd_hosts_to_upgrade
tasks:
- block:
- name: Record RPM based etcd version
command: rpm -qa --qf '%{version}' etcd\*
args:
warn: no
register: etcd_rpm_version
failed_when: false
# AUDIT:changed_when: `false` because we are only inspecting
# state, not manipulating anything
changed_when: false
- debug:
msg: "Etcd rpm version {{ etcd_rpm_version.stdout }} detected"
when: not openshift.common.is_containerized | bool
- block:
- name: Record containerized etcd version (docker)
command: docker exec etcd_container rpm -qa --qf '%{version}' etcd\*
register: etcd_container_version_docker
failed_when: false
# AUDIT:changed_when: `false` because we are only inspecting
# state, not manipulating anything
changed_when: false
when:
- not openshift.common.is_etcd_system_container | bool
# Given a register variables is set even if the whwen condition
# is false, we need to set etcd_container_version separately
- set_fact:
etcd_container_version: "{{ etcd_container_version_docker.stdout }}"
when:
- not openshift.common.is_etcd_system_container | bool
- name: Record containerized etcd version (runc)
command: runc exec etcd_container rpm -qa --qf '%{version}' etcd\*
register: etcd_container_version_runc
failed_when: false
# AUDIT:changed_when: `false` because we are only inspecting
# state, not manipulating anything
changed_when: false
when:
- openshift.common.is_etcd_system_container | bool
# Given a register variables is set even if the whwen condition
# is false, we need to set etcd_container_version separately
- set_fact:
etcd_container_version: "{{ etcd_container_version_runc.stdout }}"
when:
- openshift.common.is_etcd_system_container | bool
- debug:
msg: "Etcd containerized version {{ etcd_container_version }} detected"
when:
- 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
- name: Upgrade to 2.1
hosts: oo_etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: '2.1'
tasks:
- include: rhel_tasks.yml
when: etcd_rpm_version.stdout | default('99') | version_compare('2.1','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool
- name: Upgrade RPM hosts to 2.2
hosts: oo_etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: '2.2'
tasks:
- include: rhel_tasks.yml
when: etcd_rpm_version.stdout | default('99') | version_compare('2.2','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool
- name: Upgrade containerized hosts to 2.2.5
hosts: oo_etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: 2.2.5
tasks:
- include: containerized_tasks.yml
when: etcd_container_version | default('99') | version_compare('2.2','<') and openshift.common.is_containerized | bool
- name: Upgrade RPM hosts to 2.3
hosts: oo_etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: '2.3'
tasks:
- include: rhel_tasks.yml
when: etcd_rpm_version.stdout | default('99') | version_compare('2.3','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool
- name: Upgrade containerized hosts to 2.3.7
hosts: oo_etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: 2.3.7
tasks:
- include: containerized_tasks.yml
when: etcd_container_version | default('99') | version_compare('2.3','<') and openshift.common.is_containerized | bool
- name: Upgrade RPM hosts to 3.0
hosts: oo_etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: '3.0'
tasks:
- include: rhel_tasks.yml
when: etcd_rpm_version.stdout | default('99') | version_compare('3.0','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool
- name: Upgrade containerized hosts to etcd3 image
hosts: oo_etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: 3.0.15
tasks:
- include: containerized_tasks.yml
when: etcd_container_version | default('99') | version_compare('3.0','<') and openshift.common.is_containerized | bool
- name: Upgrade fedora to latest
hosts: oo_etcd_hosts_to_upgrade
serial: 1
tasks:
- include: fedora_tasks.yml
when: ansible_distribution == 'Fedora' and not openshift.common.is_containerized | bool
- name: Backup etcd
include: backup.yml
vars:
backup_tag: "post-3.0-"
when: openshift_etcd_backup | default(true) | bool
|