summaryrefslogtreecommitdiffstats
path: root/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade_control_plane.yml
blob: c21862dea13a42d4c4be8c6e0d88d955aad432ba (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
138
139
140
141
142
143
144
---
#
# Control Plane Upgrade Playbook
#
# Upgrades masters and Docker (only on standalone etcd hosts)
#
# This upgrade does not include:
# - node service running on masters
# - docker running on masters
# - node service running on dedicated nodes
#
# You can run the upgrade_nodes.yml playbook after this to upgrade these components separately.
#
- import_playbook: ../init.yml
  vars:
    l_upgrade_no_switch_firewall_hosts: "oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config"
    l_init_fact_hosts: "oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config"
    l_base_packages_hosts: "oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config"

- name: Configure the initial upgrade target for the common upgrade tasks
  hosts: oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config
  tasks:
  - set_fact:
      # We use 3.9 here so when we run openshift_version we can get
      # correct values for 3.9, 3.8 we will hard-code the values in
      # ../pre/version_override.yml, if necessary.
      openshift_upgrade_target: '3.9'
      openshift_upgrade_min: '3.7'

## Check to see if we need to double upgrade (3.7 -> 3.8 -> 3.9)
- name: Configure variables for double upgrade
  hosts: oo_masters_to_config:oo_etcd_to_config
  tasks:
  - set_fact:
      l_double_upgrade_cp: True
      l_version_override_hosts: "oo_masters_to_config:oo_etcd_to_config"
      l_double_upgrade_first_version: "3.8"
      l_double_upgrade_first_release: "3.8"
    when: hostvars[groups.oo_first_master.0].openshift_currently_installed_version | version_compare('3.8','<')

- import_playbook: ../pre/config.yml
  # These vars a meant to exclude oo_nodes from plays that would otherwise include
  # them by default.
  vars:
    l_version_override_hosts: "oo_masters_to_config:oo_etcd_to_config"
    l_openshift_version_set_hosts: "oo_etcd_to_config:oo_masters_to_config:!oo_first_master"
    l_openshift_version_check_hosts: "oo_masters_to_config:!oo_first_master"
    l_upgrade_repo_hosts: "oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config"
    l_upgrade_no_proxy_hosts: "oo_masters_to_config"
    l_upgrade_health_check_hosts: "oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config"
    l_upgrade_verify_targets_hosts: "oo_masters_to_config"
    l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_etcd_to_config"
    l_upgrade_excluder_hosts: "oo_masters_to_config"
    openshift_protect_installed_version: False
  when: l_double_upgrade_cp | default(False)

- name: Flag pre-upgrade checks complete for hosts without errors 3.8
  hosts: oo_masters_to_config:oo_etcd_to_config
  tasks:
  - set_fact:
      pre_upgrade_complete: True
    when: l_double_upgrade_cp | default(False)

# Pre-upgrade completed

- name: Intermediate 3.8 Upgrade
  import_playbook: ../upgrade_control_plane.yml
  when: l_double_upgrade_cp | default(False)

- name: Restore 3.9 version variables
  hosts: oo_masters_to_config:oo_etcd_to_config
  tasks:
  - set_fact:
      # all:!all == 0 hosts
      l_version_override_hosts: "all:!all"
      openshift_version: "{{ l_double_upgrade_saved_version }}"
      openshift_release: "{{ l_double_upgrade_saved_release }}"
      openshift_image_tag: "{{ l_double_upgrade_saved_tag }}"
      openshift_pkg_version: "{{ l_double_upgrade_saved_pkgv }}"
    when: l_double_upgrade_cp | default(False)

## 3.8 upgrade complete we should now be able to upgrade to 3.9
- name: Clear some values now that we're done with double upgrades.
  hosts: oo_masters_to_config:oo_etcd_to_config
  tasks:
  - set_fact:
      l_double_upgrade_cp: False
      l_double_upgrade_cp_reset_version: False

# We should be on 3.8 at this point, need to set upgrade_target to 3.9
- name: Configure the upgrade target for second upgrade
  hosts: oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config
  tasks:
  - set_fact:
      openshift_upgrade_target: '3.9'
      openshift_upgrade_min: '3.8'

- import_playbook: ../pre/config.yml
  # These vars a meant to exclude oo_nodes from plays that would otherwise include
  # them by default.
  vars:
    l_openshift_version_set_hosts: "oo_etcd_to_config:oo_masters_to_config:!oo_first_master"
    l_openshift_version_check_hosts: "oo_masters_to_config:!oo_first_master"
    l_upgrade_repo_hosts: "oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config"
    l_upgrade_no_proxy_hosts: "oo_masters_to_config"
    l_upgrade_health_check_hosts: "oo_masters_to_config:oo_etcd_to_config:oo_lb_to_config"
    l_upgrade_verify_targets_hosts: "oo_masters_to_config"
    l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_etcd_to_config"
    l_upgrade_excluder_hosts: "oo_masters_to_config"
    openshift_protect_installed_version: False

- name: Flag pre-upgrade checks complete for hosts without errors
  hosts: oo_masters_to_config:oo_etcd_to_config
  tasks:
  - set_fact:
      pre_upgrade_complete: True

- import_playbook: ../upgrade_control_plane.yml

# All controllers must be stopped at the same time then restarted
- name: Cycle all controller services to force new leader election mode
  hosts: oo_masters_to_config
  gather_facts: no
  roles:
  - role: openshift_facts
  tasks:
  - name: Restart master controllers to force new leader election mode
    service:
      name: "{{ openshift_service_type }}-master-controllers"
      state: restarted
    when: openshift.common.rolling_restart_mode == 'services'
  - name: Re-enable master controllers to force new leader election mode
    service:
      name: "{{ openshift_service_type }}-master-controllers"
      enabled: true
    when: openshift.common.rolling_restart_mode == 'system'

- import_playbook: ../post_control_plane.yml

- hosts: oo_masters
  tasks:
  - import_role:
      name: openshift_web_console
      tasks_from: remove_old_asset_config