summaryrefslogtreecommitdiffstats
path: root/playbooks/common/openshift-cluster/upgrades/etcd/upgrade.yml
blob: 54f9e21a1151f3ec41219a64e04bd5c3e8224a38 (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
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