tripleo-upgrade/tasks/common/auxilary-facts.yaml

128 lines
4.5 KiB
YAML

---
- name: register is_upstream variable
shell: |
rpm -q openstack-tripleo-heat-templates | grep '\.el[[:digit:]]\.'
failed_when: false
register: is_upstream
- name: get enabled services for each role from stack output
shell: |
source {{ undercloud_rc }}
openstack stack output show -f yaml {{ overcloud_stack_name }} EnabledServices -c output_value
register: enabled_services_out
when:
- not mock_environment|bool
- not ephemeral_heat|bool
- name: get enabled services for each role from stack export
shell: |
import yaml
e = yaml.safe_load(open("{{ working_dir }}/overcloud-deploy/{{ overcloud_stack_name }}/{{ overcloud_stack_name }}-export.yaml"))
print(yaml.dump(dict(output_value=dict(all=e['parameter_defaults']['AllNodesExtraMapData']['enabled_services']))))
args:
executable: /usr/bin/python3
register: enabled_services_out
when:
- not mock_environment|bool
- ephemeral_heat|bool
- name: set enabled_services fact
vars:
default_stdout:
output_value: {}
set_fact:
enabled_services: "{{ dict(enabled_services_out.get('stdout', default_stdout)|from_yaml).get('output_value') }}"
- name: set deployment_with_ha and deployment_with_ovs fact
set_fact:
deployment_with_ha_upstream: "{{ is_upstream.rc == 0 and ('pacemaker' in enabled_services|string) }}"
deployment_with_ovs: "{{ 'neutron_ovs_agent' in enabled_services|string }}"
deployment_with_ovn: "{{ 'neutron_plugin_ml2_ovn' in enabled_services| string }}"
- name: set ceph_osd_enabled fact
set_fact:
ceph_osd_enabled: "{{ enabled_services.values() | list | flatten | intersect(['ceph_osd','ceph_mgr','ceph_mon']) | length > 0 | bool }}"
- name: get container registry network
shell: |
{% if ephemeral_heat | bool %}
import yaml
e = yaml.safe_load(open("{{ working_dir }}/overcloud-deploy/{{ overcloud_stack_name }}/{{ overcloud_stack_name }}-export.yaml"))
print(e['parameter_defaults']['AllNodesExtraMapData']['docker_registry_network'])
{% else %}
source {{ undercloud_rc }}
openstack stack output show -f yaml {{ overcloud_stack_name }} DockerRegistryNetwork -c output_value
{% endif %}
args:
executable: "{{ (ephemeral_heat | bool) | ternary('/usr/bin/python3', '/bin/bash') }}"
register: docker_registry_network_out
when:
- not mock_environment|bool
- name: set container registry network fact
set_fact:
docker_registry_network: "{{ docker_registry_network_out.get('stdout', '') }}"
- name: get undercloud short host name
command: hostname -s
register: undercloud_short_host_name
- name: set undercloud short host name fact
set_fact:
undercloud_short_host_name: "{{ undercloud_short_host_name.stdout }}"
- name: get undercloud DNS domain name
command: hostname -d
register: undercloud_domain
- name: set undercloud DNS domain name fact
set_fact:
undercloud_domain: "{{ undercloud_domain.stdout }}"
- name: get network-data-file
shell: |
awk '/-n\s/ || /--networks-file\s/ {gsub(/[[:space:]]/, "", $2); print $2}' {{ overcloud_deploy_script }}
register: network_data_file
- name: set network_data_file fact
set_fact:
network_data_file: "{{ network_data_file.stdout }}"
- name: get env files used during deploy
shell: |
awk '/-e\s|--environment-file\s/ {gsub(/[[:space:]]/, "", $2); print $2}' {{ overcloud_deploy_script }}
register: initial_env_file
- name: set initial_env_file fact
set_fact:
initial_env_file: "{{ initial_env_file }}"
- name: get network environment fact for FFWD3
set_fact:
network_environment_file: "{{initial_env_file.stdout_lines | select('search','network-environment')| first}}"
when: initial_env_file.stdout_lines | select('search','network-environment') | list | count > 0
- name: fetch roles-data file referenced in initial deploy script
shell: |
awk '/-r\s|--roles-file\s/ {gsub(/[[:space:]]/, "", $2); print $2}' {{ overcloud_deploy_script }}
register: roles_data_file
- name: set roles-data fact
vars:
roles_data: "{{ roles_data_file.stdout }}"
set_fact:
roles_data: "{{ (roles_data_file.stdout) | ternary(roles_data, default_roles_data) }}"
custom_roles_used: "{{ (roles_data_file.stdout) | ternary(true, false) }}"
- name: check if bm nodes are present
shell: |
source {{ undercloud_rc }}
openstack baremetal node list -f value -c UUID
when: not mock_environment|bool
register: bm_node_present
- name: set fact splitstack_deployment
set_fact:
splitstack_deployment: "{{ (bm_node_present.get('stdout_lines', [])) | ternary(false, true) | default(false) }}"