Browse Source

Merge pull request #3057 from dgoodwin/serial-master-upgrade

Serial master upgrade
Scott Dodson 8 years ago
parent
commit
b3f0b74e6f

+ 4 - 0
playbooks/byo/openshift-cluster/upgrades/v3_3/upgrade.yml

@@ -66,6 +66,10 @@
   tags:
   - pre_upgrade
 
+- include: ../../../../common/openshift-master/validate_restart.yml
+  tags:
+  - pre_upgrade
+
 - include: ../../../../common/openshift-cluster/upgrades/pre/verify_upgrade_targets.yml
   tags:
   - pre_upgrade

+ 4 - 0
playbooks/byo/openshift-cluster/upgrades/v3_3/upgrade_control_plane.yml

@@ -71,6 +71,10 @@
   tags:
   - pre_upgrade
 
+- include: ../../../../common/openshift-master/validate_restart.yml
+  tags:
+  - pre_upgrade
+
 - include: ../../../../common/openshift-cluster/upgrades/pre/verify_upgrade_targets.yml
   tags:
   - pre_upgrade

+ 4 - 0
playbooks/byo/openshift-cluster/upgrades/v3_4/upgrade.yml

@@ -66,6 +66,10 @@
   tags:
   - pre_upgrade
 
+- include: ../../../../common/openshift-master/validate_restart.yml
+  tags:
+  - pre_upgrade
+
 - include: ../../../../common/openshift-cluster/upgrades/pre/verify_upgrade_targets.yml
   tags:
   - pre_upgrade

+ 4 - 0
playbooks/byo/openshift-cluster/upgrades/v3_4/upgrade_control_plane.yml

@@ -71,6 +71,10 @@
   tags:
   - pre_upgrade
 
+- include: ../../../../common/openshift-master/validate_restart.yml
+  tags:
+  - pre_upgrade
+
 - include: ../../../../common/openshift-cluster/upgrades/pre/verify_upgrade_targets.yml
   tags:
   - pre_upgrade

+ 13 - 1
playbooks/byo/openshift-master/restart.yml

@@ -15,4 +15,16 @@
   tasks:
   - include_vars: ../../byo/openshift-cluster/cluster_hosts.yml
 
-- include: ../../common/openshift-master/restart.yml
+- include: ../../common/openshift-cluster/evaluate_groups.yml
+- include: ../../common/openshift-master/validate_restart.yml
+
+- name: Restart masters
+  hosts: oo_masters_to_config
+  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'

+ 13 - 16
playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml

@@ -30,14 +30,6 @@
 - name: Upgrade and backup etcd
   include: ./etcd/main.yml
 
-- name: Upgrade master packages
-  hosts: oo_masters_to_config
-  roles:
-  - openshift_facts
-  tasks:
-  - include: rpm_upgrade.yml component=master
-    when: not openshift.common.is_containerized | bool
-
 # Create service signer cert when missing. Service signer certificate
 # is added to master config in the master config hook for v3_3.
 - name: Determine if service signer cert must be created
@@ -59,14 +51,20 @@
   roles:
   - openshift_master_facts
 
-- name: Upgrade master config and systemd units
+- name: Upgrade master
   hosts: oo_masters_to_config
+  vars:
+    openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}"
+  serial: 1
   handlers:
   - include: ../../../../roles/openshift_master/handlers/main.yml
     static: yes
   roles:
   - openshift_facts
   post_tasks:
+  - include: rpm_upgrade.yml component=master
+    when: not openshift.common.is_containerized | bool
+
   - include_vars: ../../../../roles/openshift_master_facts/vars/main.yml
 
   - include: upgrade_scheduler.yml
@@ -104,9 +102,12 @@
       state: link
     when: ca_crt_stat.stat.isreg and not ca_bundle_stat.stat.exists
 
-- name: Set master update status to complete
-  hosts: oo_masters_to_config
-  tasks:
+  - include: ../../openshift-master/restart_hosts.yml
+    when: openshift.common.rolling_restart_mode == 'system'
+
+  - include: ../../openshift-master/restart_services.yml
+    when: openshift.common.rolling_restart_mode == 'services'
+
   - set_fact:
       master_update_complete: True
 
@@ -128,10 +129,6 @@
       msg: "Upgrade cannot continue. The following masters did not finish updating: {{ master_update_failed | join(',') }}"
     when: master_update_failed | length > 0
 
-# We are now ready to restart master services (or entire system
-# depending on openshift_rolling_restart_mode):
-- include: ../../openshift-master/restart.yml
-
 ###############################################################################
 # Reconcile Cluster Roles, Cluster Role Bindings and Security Context Constraints
 ###############################################################################

+ 3 - 3
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

+ 0 - 13
playbooks/common/openshift-master/restart.yml

@@ -1,6 +1,4 @@
 ---
-- include: ../openshift-cluster/evaluate_groups.yml
-
 - name: Validate configuration for rolling restart
   hosts: oo_masters_to_config
   roles:
@@ -65,14 +63,3 @@
   - set_fact:
       current_host: "{{ exists.stat.exists }}"
     when: openshift.common.rolling_restart_mode == 'system'
-
-- name: Restart masters
-  hosts: oo_masters_to_config
-  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'