- block: - name: is additonal Cell? set_fact: nova_additional_cell: false - block: - name: discover via nova_manager? set_fact: nova_cellv2_discovery_container: nova_manager nova_cellv2_discovery_delegate_host: '{{ groups[''nova_manager''][0] }}' when: - groups['nova_manager'] is defined and (groups['nova_manager']|length>0) - name: discover via nova_api? set_fact: nova_cellv2_discovery_container: nova_api nova_cellv2_discovery_delegate_host: '{{ groups[''nova_api''][0] }}' when: - nova_cellv2_discovery_delegate_host is not defined - groups['nova_api'] is defined and (groups['nova_api']|length>0) - fail: msg: No hosts available to run nova cell_v2 host discovery. ignore_errors: true name: Warn if no discovery host available when: - nova_cellv2_discovery_delegate_host is not defined - become: true changed_when: false command: '{{ container_cli }} exec {{ nova_cellv2_discovery_container }} nova-manage cell_v2 discover_hosts --by-service' delegate_to: '{{ nova_cellv2_discovery_delegate_host }}' name: Discovering nova hosts when: - nova_cellv2_discovery_delegate_host is defined - set_fact: nova_cellv2_discovery_done: true name: check if discover hosts is required when: - not nova_additional_cell|bool - nova_cellv2_discovery_done is not defined - block: - name: Set up group_vars no_log: '{{ hide_sensitive_logs | bool }}' set_fact: octavia_ansible_group_vars: amp_hw_arch: x86_64 amp_image_filename: '' amp_image_name: '' amp_image_tag: amphora-image amp_ssh_key_dir: /etc/octavia/ssh amp_ssh_key_name: octavia-ssh-key amp_ssh_key_path: /root/.ssh/id_ecdsa.pub amp_to_raw: true auth_password: 7ujDjG1r0hrZ3oDqCbiDEUppZ auth_project_name: service auth_username: octavia ca_cert_path: /etc/octavia/certs/ca_01.pem ca_passphrase: c9qhVQUFWHgxqRdGRspxxjRo9 ca_private_key_path: /etc/octavia/certs/private/cakey.pem client_cert_path: /etc/octavia/certs/client.pem container_cli: podman enable_log_offloading: true generate_certs: true lb_mgmt_net_name: lb-mgmt-net lb_mgmt_subnet_cidr: 172.24.0.0/16 lb_mgmt_subnet_gateway: 172.24.0.1 lb_mgmt_subnet_name: lb-mgmt-subnet lb_mgmt_subnet_pool_end: 172.24.255.254 lb_mgmt_subnet_pool_start: 172.24.0.2 lb_sec_group_name: lb-mgmt-subnet log_offload_protocol: udp mgmt_port_dev: o-hm0 octavia_admin_log_targets: [] octavia_ansible_playbook: /usr/share/ansible/tripleo-playbooks/octavia-files.yaml octavia_flavor_id: '65' octavia_flavor_properties: disk: '3' ram: '1024' vcpus: '1' octavia_group_vars_dir: '{{playbook_dir}}/octavia-ansible/group_vars' octavia_local_tmpdir: '{{playbook_dir}}/octavia-ansible/local_dir' octavia_manage_nova_flavor: true octavia_multivcpu_flavor_id: amphora-mvcpu-ha octavia_multivcpu_flavor_properties: disk: '3' ram: '4096' vcpus: '4' octavia_tenant_log_targets: [] os_auth_type: password os_auth_url: http://172.21.0.2:5000/v3 os_identity_api_version: '3' os_int_auth_url: http://172.17.0.2:5000/ os_password: VQUMntEwndaxR2lKQKDJyuQjn os_project_name: admin os_username: admin server_certs_key_passphrase: 1JNvPiTAEjkl8UI2gSbUUT6JGIG6B16B - become: true file: owner: '{{ ansible_user }}' path: '{{item}}' state: directory name: Make needed directories on the undercloud with_items: - '{{playbook_dir}}/octavia-ansible' - '{{ octavia_ansible_group_vars.octavia_local_tmpdir }}' - '{{ octavia_ansible_group_vars.octavia_group_vars_dir }}' - become: true copy: content: '{{ octavia_ansible_group_vars|to_nice_yaml }}' dest: '{{ octavia_ansible_group_vars.octavia_group_vars_dir }}/octavia_vars.yaml' name: Write group_vars file no_log: '{{ hide_sensitive_logs | bool }}' - delegate_facts: true delegate_to: '{{item}}' loop: '{{ groups[''octavia_worker''] }}' name: Gather missing facts setup: gather_subset: - '!all' - min - become: true copy: content: "octavia_nodes:\n hosts:\n\n{%- set octavia_groups = ['worker'] -%}\n\ {%- for octavia_group in octavia_groups -%}\n{%- if 'octavia_' ~ octavia_groups\ \ %}\n\n {% for host in groups['octavia_' ~ octavia_group] -%}\n {{\ \ hostvars.raw_get(host)['ansible_facts']['hostname'] | lower}}:\n ansible_user:\ \ {{ hostvars.raw_get(host)['ansible_ssh_user'] | default('heat-admin') }}\n\ \ ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host)\ \ | lower }}\n canonical_hostname: {{ hostvars.raw_get(host)['canonical_hostname']\ \ | default(host) | lower }}\n ansible_become: true\n {% endfor %}\n\ \n{%- endif -%}\n{%- endfor %}\n\nUndercloud:\n hosts:\n {% for host in\ \ groups['Undercloud'] -%}\n {{ hostvars.raw_get(host)['ansible_facts']['hostname']\ \ | lower}}:\n ansible_host: {{ hostvars.raw_get(host)['ansible_host']\ \ | default(host) | lower }}\n ansible_become: false\n ansible_connection:\ \ local\n\n {%- endfor -%}\n" dest: '{{playbook_dir}}/octavia-ansible/inventory.yaml' name: Write octavia inventory - become: true name: Check for ssh_private_key in working directory register: detect_private_key_file stat: path: '{{ lookup(''env'', ''ANSIBLE_PRIVATE_KEY_FILE'') }}' - name: Set private key location set_fact: octavia_ansible_ssh_key: '{{ lookup(''env'', ''ANSIBLE_PRIVATE_KEY_FILE'') }}' when: octavia_ansible_ssh_key is not defined and detect_private_key_file.stat.exists - name: Configure octavia command set_fact: config_octavia_cmd: ANSIBLE_CONFIG="{{playbook_dir}}/ansible.cfg" ansible-playbook -i "{{playbook_dir}}/octavia-ansible/inventory.yaml" --extra-vars @{{ octavia_ansible_group_vars.octavia_group_vars_dir }}/octavia_vars.yaml {% if octavia_ansible_ssh_key is defined %}--private-key {{octavia_ansible_ssh_key}}{% endif %} {{ octavia_ansible_group_vars.octavia_ansible_playbook }} - set_fact: octavia_log_dir: '{{playbook_dir}}/octavia-ansible/' - debug: msg: 'Configure Octavia command is: {{ config_octavia_cmd }}' - become: true environment: ANSIBLE_HOST_KEY_CHECKING: false ANSIBLE_LOCAL_TEMP: '{{ octavia_ansible_group_vars.octavia_local_tmpdir }}' ANSIBLE_LOG_PATH: '{{ octavia_log_dir }}/octavia-ansible.log' ANSIBLE_RETRY_FILES_ENABLED: false ANSIBLE_SSH_RETRIES: 3 name: Configure octavia on overcloud shell: '{{ config_octavia_cmd }}' - become: true file: path: '{{ item }}' state: absent name: Purge temp dirs with_items: - '{{ octavia_ansible_group_vars.octavia_local_tmpdir }}' name: octavia_post_deploy