pcmk_remote FFU support for Instance HA
The idea here is to set an override key like the following during the upgrade: hiera -c /etc/puppet/hiera.yaml pacemaker_remote_short_node_names_override ["compute-0"] So that puppet-tripleo can detect the key and act accordingly knowning that it is being upgraded (main reason is that the authkey management for remotes needs to be special-cased in puppet). Once the upgrade is completed we remove the key in post_upgrade_tasks. Tested this on a number of runs and confirmed that: - The IHA FFU completed correctly on controlplane + computes - Tempest still works after the FFU - The override keys are correctly removed at the end of the upgrade of each compute node Closes-Bug: #1888398 Change-Id: I8bc42fb758a333adc9cd65602b44fabee6fc4041
This commit is contained in:
parent
672f8cbd05
commit
2f460accb9
@ -120,3 +120,63 @@ outputs:
|
||||
- {get_param: PacemakerRemoteLoggingSource}
|
||||
step_config: |
|
||||
include tripleo::profile::base::pacemaker_remote
|
||||
upgrade_tasks:
|
||||
- name: Create hiera data to upgrade pacemaker remote in a stepwise manner.
|
||||
when:
|
||||
- step|int == 1
|
||||
block:
|
||||
- name: set pacemaker upgrade remote node facts in a single-node environment
|
||||
set_fact:
|
||||
pacemaker_remote_short_node_names_upgraded: "{{ pacemaker_remote_short_node_names }}"
|
||||
cacheable: no
|
||||
when: groups['pacemaker_remote'] | length <= 1
|
||||
- name: set pacemaker remote upgrade node facts from the limit option
|
||||
set_fact:
|
||||
pacemaker_remote_short_node_names_upgraded: "{{ pacemaker_remote_short_node_names_upgraded|default([]) + [item.split('.')[0]] }}"
|
||||
cacheable: no
|
||||
when:
|
||||
- groups['pacemaker_remote'] | length > 1
|
||||
- item.split('.')[0] in ansible_limit.split(':')
|
||||
loop: "{{ pacemaker_remote_short_node_names | default([]) }}"
|
||||
- debug:
|
||||
msg: "Prepare pacemaker remote upgrade for {{ pacemaker_remote_short_node_names_upgraded }}"
|
||||
- name: set pacemaker remote node ips fact from the names fact
|
||||
set_fact:
|
||||
# Generate matching IPs for the names, e.g. for these varaible values:
|
||||
# pacemaker_node_ips: [ "1", "2", "3" ]
|
||||
# pacemaker_short_node_names: [ "a", "b", "c" ]
|
||||
# pacemaker_short_node_names_override: [ "b" ]
|
||||
# it will set:
|
||||
# pacemaker_node_ips_override: [ "2" ]
|
||||
pacemaker_remote_node_ips_upgraded: "{{
|
||||
dict(pacemaker_remote_short_node_names|zip(pacemaker_remote_node_ips))
|
||||
| dict2items
|
||||
| selectattr('key', 'in', pacemaker_remote_short_node_names_upgraded)
|
||||
| map(attribute='value')
|
||||
| list }}"
|
||||
cacheable: no
|
||||
- name: add the pacemaker remote short name to hiera data for the upgrade.
|
||||
include_role:
|
||||
name: tripleo_upgrade_hiera
|
||||
tasks_from: set.yml
|
||||
vars:
|
||||
tripleo_upgrade_key: pacemaker_remote_short_node_names_override
|
||||
tripleo_upgrade_value: "{{pacemaker_remote_short_node_names_upgraded}}"
|
||||
- name: add the pacemaker remote ips to hiera data for the upgrade.
|
||||
include_role:
|
||||
name: tripleo_upgrade_hiera
|
||||
tasks_from: set.yml
|
||||
vars:
|
||||
tripleo_upgrade_key: pacemaker_remote_node_ips_override
|
||||
tripleo_upgrade_value: "{{pacemaker_remote_node_ips_upgraded}}"
|
||||
post_upgrade_tasks:
|
||||
- name: remove the extra hiera data needed for the upgrade.
|
||||
when: step|int == 1
|
||||
include_role:
|
||||
name: tripleo_upgrade_hiera
|
||||
tasks_from: remove.yml
|
||||
vars:
|
||||
tripleo_upgrade_key: "{{item}}"
|
||||
loop:
|
||||
- pacemaker_remote_short_node_names_override
|
||||
- pacemaker_remote_node_ips_override
|
||||
|
Loading…
x
Reference in New Issue
Block a user