From 2c91510d4ce3baa92e8e054223659e4e3fa5dbcd Mon Sep 17 00:00:00 2001 From: Devan Goodwin Date: Tue, 17 Jan 2017 14:55:46 -0400 Subject: Implement pre/post master upgrade hooks. --- inventory/byo/hosts.origin.example | 15 +++++++++++++++ inventory/byo/hosts.ose.example | 15 +++++++++++++++ .../openshift-cluster/upgrades/upgrade_control_plane.yml | 9 +++++++++ 3 files changed, 39 insertions(+) diff --git a/inventory/byo/hosts.origin.example b/inventory/byo/hosts.origin.example index dde172c4a..062a776b0 100644 --- a/inventory/byo/hosts.origin.example +++ b/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 diff --git a/inventory/byo/hosts.ose.example b/inventory/byo/hosts.ose.example index c0dd8a1e8..bcc2373ce 100644 --- a/inventory/byo/hosts.ose.example +++ b/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 diff --git a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml index 7f738ea0f..59e5010f5 100644 --- a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml +++ b/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 -- cgit v1.2.3