summaryrefslogtreecommitdiffstats
path: root/playbooks/common
diff options
context:
space:
mode:
authorDevan Goodwin <dgoodwin@redhat.com>2017-01-04 15:40:54 -0400
committerDevan Goodwin <dgoodwin@redhat.com>2017-01-18 10:40:21 -0400
commit1f7ff637a1e5413e2a8d8fe19ffb28b373243e6f (patch)
tree28d5061c3293fb4dc95f5929eadacfa9373e4282 /playbooks/common
parent7b512bf5fc36ee9ad2df65d8e129aa52c939d98e (diff)
downloadopenshift-1f7ff637a1e5413e2a8d8fe19ffb28b373243e6f.tar.gz
openshift-1f7ff637a1e5413e2a8d8fe19ffb28b373243e6f.tar.bz2
openshift-1f7ff637a1e5413e2a8d8fe19ffb28b373243e6f.tar.xz
openshift-1f7ff637a1e5413e2a8d8fe19ffb28b373243e6f.zip
Validate system restart policy during pre-upgrade.
This was done far into the process potentially leaving the user in a difficult situation if they had now considered they were running the upgrade playbook on a host that would be restarted. Instead check configuration and what host we're running on in pre-upgrade and allow the user to abort before making any substantial changes. This is a step towards merging master upgrade into one serial process.
Diffstat (limited to 'playbooks/common')
-rw-r--r--playbooks/common/openshift-master/restart.yml67
-rw-r--r--playbooks/common/openshift-master/restart_services.yml6
-rw-r--r--playbooks/common/openshift-master/validate_restart.yml65
3 files changed, 68 insertions, 70 deletions
diff --git a/playbooks/common/openshift-master/restart.yml b/playbooks/common/openshift-master/restart.yml
index 7b340887a..6fb35f25c 100644
--- a/playbooks/common/openshift-master/restart.yml
+++ b/playbooks/common/openshift-master/restart.yml
@@ -1,71 +1,4 @@
---
-- 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 after this system has been restarted and services
- must be verified manually. To only restart services, set
- openshift_master_rolling_restart_mode=services in host
- inventory and relaunch the playbook.
- 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: Restart masters
hosts: oo_masters_to_config
vars:
diff --git a/playbooks/common/openshift-master/restart_services.yml b/playbooks/common/openshift-master/restart_services.yml
index b40c32669..508b5a3ac 100644
--- a/playbooks/common/openshift-master/restart_services.yml
+++ b/playbooks/common/openshift-master/restart_services.yml
@@ -8,14 +8,14 @@
service:
name: "{{ openshift.common.service_type }}-master-api"
state: restarted
- when: openshift_master_ha | bool and openshift.master.cluster_method != 'pacemaker'
+ when: openshift_master_ha | bool
- name: Wait for master API to come back online
wait_for:
host: "{{ openshift.common.hostname }}"
state: started
delay: 10
port: "{{ openshift.master.api_port }}"
- when: openshift_master_ha | bool and openshift.master.cluster_method != 'pacemaker'
+ when: openshift_master_ha | bool
- name: Restart master controllers
service:
name: "{{ openshift.common.service_type }}-master-controllers"
@@ -23,4 +23,4 @@
# Ignore errrors since it is possible that type != simple for
# pre-3.1.1 installations.
ignore_errors: true
- when: openshift_master_ha | bool and openshift.master.cluster_method != 'pacemaker'
+ when: openshift_master_ha | bool
diff --git a/playbooks/common/openshift-master/validate_restart.yml b/playbooks/common/openshift-master/validate_restart.yml
new file mode 100644
index 000000000..5dbb21502
--- /dev/null
+++ b/playbooks/common/openshift-master/validate_restart.yml
@@ -0,0 +1,65 @@
+---
+- 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 after this system has been restarted and services
+ must be verified manually. To only restart services, set
+ openshift_master_rolling_restart_mode=services in host
+ inventory and relaunch the playbook.
+ 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'