--- - name: load inventory file slurp: src: "{{ upgrade_validation_inventory }}" register: upgrade_tripleo_inventory - name: set inventory facts set_fact: inventory_rolemap: "{{ upgrade_tripleo_inventory.content | b64decode | to_inventory_rolemap }}" inventory_hostmap: "{{ upgrade_tripleo_inventory.content | b64decode | to_inventory_hostmap }}" inventory_roles: "{{ upgrade_tripleo_inventory.content | b64decode | to_inventory_roles }}" - name: store roles and register controller role name set_fact: oc_roles: "{{ oc_roles + inventory_roles }}" controller_role_name: "{{ inventory_roles | map('regex_search', '^[A-Za-z0-9]*[Cc]ontroller[A-Za-z0-9]*$') | select('string') | list | last | default('') }}" - name: register compute role name set_fact: compute_role_name: "{{ inventory_roles | map('regex_search', '^[A-Za-z0-9]*[Cc]ompute[A-Za-z0-9]*$') | select('string') | list | last | default('') }}" - name: register ceph storage role name set_fact: cephstorage_role_name: "{{ inventory_roles | map('regex_search', '^[A-Za-z0-9]*[Cc]eph[Ss]torage[A-Za-z0-9]*$') | select('string') | list | last | default('') }}" - name: store sorted roles with controller first(default) set_fact: oc_roles: "{{ oc_roles|intersect([controller_role_name]) + oc_roles|difference([controller_role_name]+[compute_role_name]+[cephstorage_role_name]) \ + oc_roles|intersect([compute_role_name]) + oc_roles|intersect([cephstorage_role_name]) }}" when: roles_upgrade_order == '__undefined__' - name: store sorted roles with controller first(user-defined) set_fact: oc_roles: "{{ roles_upgrade_order.split(';') }}" when: roles_upgrade_order != '__undefined__' # In order to get the upgrade working, in the Controller role we # need to start always by the bootstrap node for Pacemaker. - name: Retrieve the pacemaker bootstrap controller node. shell: "sudo hiera -c /etc/puppet/hiera.yaml pacemaker_short_bootstrap_node_name" become_user: "{{ (overcloud_ssh_user) | ternary(overcloud_ssh_user, 'tripleo-admin') }}" delegate_to: "{{ inventory_hostmap[controller_role_name]|first }}" register: pcmkr_bootstrap_node_out when: - not update_cell|bool - not mock_environment|bool - controller_role_name|length > 0 - name: Create ordered Controller's host set (bootstrap node first) vars: pcmkr_bootstrap_node: "{{ (pcmkr_bootstrap_node_out|default(omit)).get('stdout', '') }}" controllers_from_inventory: "{{ (inventory_hostmap[controller_role_name] | default('')) | list }}" set_fact: controllers_ordered: "{{ controllers_from_inventory|intersect([pcmkr_bootstrap_node]) + controllers_from_inventory|difference([pcmkr_bootstrap_node]) }}" when: not update_cell|bool - name: create hosts per role fact set_fact: oc_roles_hosts: "{{ oc_roles_hosts | combine({ item : controllers_ordered if item == controller_role_name else inventory_hostmap[item]|list }) }}" loop: "{{ inventory_roles }}" when: not update_cell | bool - name: create hosts per role fact for cells set_fact: oc_roles_hosts: "{{ oc_roles_hosts | combine({ item : inventory_hostmap[item]|list }) }}" loop: "{{ inventory_roles }}" when: update_cell | bool