summaryrefslogtreecommitdiffstats
path: root/playbooks/common/openshift-master/validate_restart.yml
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/openshift-master/validate_restart.yml
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/openshift-master/validate_restart.yml')
-rw-r--r--playbooks/common/openshift-master/validate_restart.yml65
1 files changed, 65 insertions, 0 deletions
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'