blob: 62ea1fe48fff1a10d265b216e2f5e9e1a2ed9e8f (
plain)
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
|
---
# For 1.4/3.4 we want to upgrade everyone to etcd-3.0. etcd docs say to
# upgrade from 2.0.x to 2.1.x to 2.2.x to 2.3.x to 3.0.x. While this is a tedius
# task for RHEL and CENTOS it's simply not possible in Fedora unless you've
# mirrored packages on your own because only the GA and latest versions are
# available in the repos. So for Fedora we'll simply skip this, sorry.
- include: ../../evaluate_groups.yml
tags:
- always
# We use two groups one for hosts we're upgrading which doesn't include embedded etcd
# The other for backing up which includes the embedded etcd host, there's no need to
# upgrade embedded etcd that just happens when the master is updated.
- name: Evaluate additional groups for upgrade
hosts: localhost
connection: local
become: no
tasks:
- name: Evaluate etcd_hosts_to_upgrade
add_host:
name: "{{ item }}"
groups: etcd_hosts_to_upgrade
with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else [] }}"
- name: Evaluate etcd_hosts_to_backup
add_host:
name: "{{ item }}"
groups: etcd_hosts_to_backup
with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else groups.oo_first_master }}"
- name: Backup etcd before upgrading anything
include: backup.yml
vars:
backup_tag: "pre-upgrade-"
when: openshift_upgrade_etcd_backup | default(true) | bool
- name: Drop etcdctl profiles
hosts: etcd_hosts_to_upgrade
tasks:
- include: roles/etcd/tasks/etcdctl.yml
- name: Determine etcd version
hosts: etcd_hosts_to_upgrade
tasks:
- name: Record RPM based etcd version
command: rpm -qa --qf '%{version}' etcd\*
args:
warn: no
register: etcd_rpm_version
failed_when: false
when: not openshift.common.is_containerized | bool
- name: Record containerized etcd version
command: docker exec etcd_container rpm -qa --qf '%{version}' etcd\*
register: etcd_container_version
failed_when: false
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: 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: 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: etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: 2.2.5
tasks:
- include: containerized_tasks.yml
when: etcd_container_version.stdout | default('99') | version_compare('2.2','<') and openshift.common.is_containerized | bool
- name: Upgrade RPM hosts to 2.3
hosts: 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: etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: 2.3.7
tasks:
- include: containerized_tasks.yml
when: etcd_container_version.stdout | default('99') | version_compare('2.3','<') and openshift.common.is_containerized | bool
- name: Upgrade RPM hosts to 3.0
hosts: 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: etcd_hosts_to_upgrade
serial: 1
vars:
upgrade_version: 3.0.14
tasks:
- include: containerized_tasks.yml
when: etcd_container_version.stdout | default('99') | version_compare('3.0','<') and 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' and not openshift.common.is_containerized | bool
- name: Backup etcd
include: backup.yml
vars:
backup_tag: "post-3.0-"
when: openshift_upgrade_etcd_backup | default(true) | bool
|