blob: 7603f0d6158dbef43b7d0d16f49406c6ea6fec4b (
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
|
---
- include: ../openshift-cluster/evaluate_groups.yml
- name: Validate configuration for rolling restart
hosts: oo_masters_to_config
roles:
- openshift_facts
tasks:
- fail:
msg: "openshift_rolling_restart_mode must be set to either 'services' or 'system'"
when: openshift_rolling_restart_mode is defined and openshift_rolling_restart_mode not in ["services", "system"]
- openshift_facts:
role: "{{ item.role }}"
local_facts: "{{ item.local_facts }}"
with_items:
- role: common
local_facts:
rolling_restart_mode: "{{ openshift_rolling_restart_mode | default('services') }}"
- role: master
local_facts:
cluster_method: "{{ openshift_master_cluster_method | default(None) }}"
# Creating a temp file on localhost, we then check each system that will
# be rebooted to see if that file exists, if so we know we're running
# ansible on a machine that needs a reboot, and we need to error out.
- name: Create temp file on localhost
hosts: localhost
connection: local
become: no
gather_facts: no
tasks:
- local_action: command mktemp
register: mktemp
changed_when: false
- name: Check if temp file exists on any masters
hosts: oo_masters_to_config
tasks:
- stat: path="{{ hostvars.localhost.mktemp.stdout }}"
register: exists
changed_when: false
- name: Cleanup temp file on localhost
hosts: localhost
connection: local
become: no
gather_facts: no
tasks:
- file: path="{{ hostvars.localhost.mktemp.stdout }}" state=absent
changed_when: false
- name: Warn if restarting the system where ansible is running
hosts: oo_masters_to_config
tasks:
- pause:
prompt: >
Warning: Running playbook from a host that will be restarted!
Press CTRL+C and A to abort playbook execution. You may
continue by pressing ENTER but the playbook will stop
executing once this system restarts and services must be
manually verified.
when: exists.stat.exists and openshift.common.rolling_restart_mode == 'system'
- set_fact:
current_host: "{{ exists.stat.exists }}"
when: openshift.common.rolling_restart_mode == 'system'
- name: Determine which masters are currently active
hosts: oo_masters_to_config
tasks:
- name: Check master service status
command: >
systemctl is-active {{ openshift.common.service_type }}-master
register: active_check_output
when: openshift.master.cluster_method == 'pacemaker'
failed_when: active_check_output.stdout not in ['active', 'inactive']
- set_fact:
is_active: "{{ active_check_output.stdout == 'active' }}"
when: openshift.master.cluster_method == 'pacemaker'
- name: Evaluate master groups
hosts: localhost
become: no
tasks:
- name: Evaluate oo_active_masters
add_host:
name: "{{ item }}"
groups: oo_active_masters
ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"
ansible_sudo: "{{ g_sudo | default(omit) }}"
with_items: "{{ groups.oo_masters_to_config | default([]) }}"
when: (hostvars[item]['is_active'] | default(false)) | bool
- name: Evaluate oo_current_masters
add_host:
name: "{{ item }}"
groups: oo_current_masters
ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"
ansible_sudo: "{{ g_sudo | default(omit) }}"
with_items: "{{ groups.oo_masters_to_config | default([]) }}"
when: (hostvars[item]['current_host'] | default(false)) | bool
- name: Restart masters
hosts: oo_masters_to_config:!oo_active_masters:!oo_current_masters
vars:
openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}"
serial: 1
tasks:
- include: restart_hosts.yml
when: openshift.common.rolling_restart_mode == 'system'
- include: restart_services.yml
when: openshift.common.rolling_restart_mode == 'services'
- name: Restart active masters
hosts: oo_active_masters
serial: 1
tasks:
- include: restart_hosts_pacemaker.yml
when: openshift.common.rolling_restart_mode == 'system'
- include: restart_services_pacemaker.yml
when: openshift.common.rolling_restart_mode == 'services'
- name: Restart current masters
hosts: oo_current_masters
serial: 1
tasks:
- include: restart_hosts.yml
when: openshift.common.rolling_restart_mode == 'system'
- include: restart_services.yml
when: openshift.common.rolling_restart_mode == 'services'
|