Allow to switch from parallel to serial update.

We can encounter corner case pacemaker issues with parallel role
update. While we solve them, we need a way to disable parallel role
update.

Using a idiom mentionned in the ansible documentation[1] we start role
update by batch. When batch is 1, this is serial update, one role
after another.

This is the default.

[1] https://docs.ansible.com/ansible/latest/user_guide/playbooks_async.html

Change-Id: I03378557653d07113fa70782e5d22bf5e3e969b8
(cherry picked from commit 8d2027f1f1)
(cherry picked from commit a7704f6559)
This commit is contained in:
Sofer Athlan-Guyot 2020-01-16 17:51:54 +01:00
parent c4fea34797
commit 52c2dda30a
3 changed files with 37 additions and 19 deletions

View File

@ -22,6 +22,7 @@ overcloud_upgrade: false
undercloud_update: false
overcloud_update: false
overcloud_images_validate: false
overcloud_batch_update: false
# enable ffu upgrade
ffu_undercloud_upgrade: false

View File

@ -2,26 +2,20 @@
- name: import tasks from l3_agent_connectivity_check_start_script
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 }} > \
{{ working_dir }}/overcloud_update_run_{{ item }}.log
loop: "{{ oc_roles|default(['all']) }}"
register: overcloud_update_nodes
ignore_errors: true
- name: Are we running in parallel or serially ?
debug:
msg: "{{ (overcloud_batch_update|bool) | ternary('Running in parallel', 'Running serially') }}"
- name: generate roles list from inventory file
import_tasks: ../common/load_roles_from_inventory.yaml
when: not oc_roles
- name: Run update.
vars:
oc_current_role: "{{ item }}"
include_tasks: overcloud_update_run_role.yml
loop: "{{ oc_roles|default(['all'])|batch((overcloud_batch_update|bool) | ternary(100, 1))|list }}"
- name: was the overcloud minor update successful?
async_status:
jid: "{{ async_result_item.ansible_job_id }}"
loop: "{{ overcloud_update_nodes.results }}"
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

View File

@ -0,0 +1,23 @@
---
- 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 }}-{{ oc_running_role }}.sh 2>&1 {{ timestamper_cmd }} > \
{{ working_dir }}/overcloud_update_run_{{ oc_running_role }}.log
loop: "{{ oc_current_role }}"
loop_control:
loop_var: "oc_running_role"
register: overcloud_update_nodes
ignore_errors: true
- name: was the overcloud minor update successful?
async_status:
jid: "{{ async_result_item.ansible_job_id }}"
loop: "{{ overcloud_update_nodes.results }}"
loop_control:
loop_var: "async_result_item"
register: async_poll_results
until: async_poll_results.finished
retries: 25200