Update: Run all roles update at once

Previously we ran role by role which is not necessary and not
intended way of production update. In case of proper testing on
preprod customers should run update as fast as possible which
means leveraging ability to run all roles at once and even all
nodes of selected roles at once. With this patch the Pacemaker
enabled roles will still update in serial but the roles will be
done in parallel. In case of 3 controller 3 database 3 messaging
setup it will look roughly like this:

Update of controller[0] database[0] messaging[0]
Update of controller[0] database[1] messaging[1]
Update of controller[1] database[2] messaging[2]
Update of controller[2]

This is due to not blocking between roles and each role taking
different amount of time to apply the update. At any moment the
pacemaker quorum is not broken.

Change-Id: Ib119210139886382726bc0ccddfdb4f7f6803015
(cherry picked from commit a2b433133d)
This commit is contained in:
Lukas Bezdicka 2019-11-27 12:17:47 +01:00 committed by Lukas Bezdicka
parent 55a5830f09
commit 6b135a3238
1 changed files with 10 additions and 3 deletions

View File

@ -3,6 +3,8 @@
import_tasks: ../common/l3_agent_connectivity_check_start_script.yml
- name: run overcloud minor update in each of the roles/hostgroups
async: 25200
poll: 0
shell: |
set -o pipefail
bash {{ overcloud_update_run_script_base }}-{{ item }}.sh 2>&1 {{ timestamper_cmd }} > \
@ -11,10 +13,15 @@
register: overcloud_update_nodes
ignore_errors: true
- name: was the overcloud minor update successful.
fail: msg="Overcloud minor update execution step failed..."
- name: was the overcloud minor update successful?
async_status:
jid: "{{ async_result_item.ansible_job_id }}"
loop: "{{ overcloud_update_nodes.results }}"
when: item.rc != 0
loop_control:
loop_var: "async_result_item"
register: async_poll_results
until: async_poll_results.finished
retries: 25200
- name: import tasks from l3_agent_connectivity_check_stop_script
import_tasks: ../common/l3_agent_connectivity_check_stop_script.yml