Browse Source

Implement pre/post master upgrade hooks.

Devan Goodwin 8 years ago
parent
commit
2c91510d4c

+ 15 - 0
inventory/byo/hosts.origin.example

@@ -89,6 +89,21 @@ openshift_release=v1.4
 # Skip upgrading Docker during an OpenShift upgrade, leaves the current Docker version alone.
 # docker_upgrade=False
 
+
+# Upgrade Hooks
+#
+# Hooks are available to run custom tasks at various points during a cluster
+# upgrade. Each hook should point to a file with Ansible tasks defined. Suggest using
+# absolute paths, if not the path will be treated as relative to the file where the
+# hook is actually used.
+#
+# Tasks to run before each master is upgraded:
+# openshift_upgrade_pre_master_hook=/usr/share/custom/pre_master.yml
+#
+# Tasks to run after each master is upgraded:
+# openshift_upgrade_post_master_hook=/usr/share/custom/post_master.yml
+
+
 # Alternate image format string, useful if you've got your own registry mirror
 #oreg_url=example.com/openshift3/ose-${component}:${version}
 # If oreg_url points to a registry other than registry.access.redhat.com we can

+ 15 - 0
inventory/byo/hosts.ose.example

@@ -89,6 +89,21 @@ openshift_release=v3.4
 # Skip upgrading Docker during an OpenShift upgrade, leaves the current Docker version alone.
 # docker_upgrade=False
 
+
+# Upgrade Hooks
+#
+# Hooks are available to run custom tasks at various points during a cluster
+# upgrade. Each hook should point to a file with Ansible tasks defined. Suggest using
+# absolute paths, if not the path will be treated as relative to the file where the
+# hook is actually used.
+#
+# Tasks to run before each master is upgraded:
+# openshift_upgrade_pre_master_hook=/usr/share/custom/pre_master.yml
+#
+# Tasks to run after each master is upgraded:
+# openshift_upgrade_post_master_hook=/usr/share/custom/post_master.yml
+
+
 # Alternate image format string, useful if you've got your own registry mirror
 #oreg_url=example.com/openshift3/ose-${component}:${version}
 # If oreg_url points to a registry other than registry.access.redhat.com we can

+ 9 - 0
playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml

@@ -51,6 +51,8 @@
   roles:
   - openshift_master_facts
 
+# The main master upgrade play. Should handle all changes to the system in one pass, with
+# support for optional hooks to be defined.
 - name: Upgrade master
   hosts: oo_masters_to_config
   vars:
@@ -62,6 +64,10 @@
   roles:
   - openshift_facts
   post_tasks:
+
+  - include: "{{ openshift_upgrade_pre_master_hook }}"
+    when: openshift_upgrade_pre_master_hook is defined
+
   - include: rpm_upgrade.yml component=master
     when: not openshift.common.is_containerized | bool
 
@@ -108,6 +114,9 @@
   - include: ../../openshift-master/restart_services.yml
     when: openshift.common.rolling_restart_mode == 'services'
 
+  - include: "{{ openshift_upgrade_post_master_hook }}"
+    when: openshift_upgrade_post_master_hook is defined
+
   - set_fact:
       master_update_complete: True