--- - hosts: all tasks: - name: Copy all files to undercloud copy: src: "{{ apex_temp_dir }}/{{ item }}" dest: "/home/stack/{{ item }}" owner: stack group: stack mode: 0644 with_items: - network-environment.yaml - instackenv.json - overcloud-full.qcow2 - overcloud-full.vmlinuz - overcloud-full.initrd - ironic-python-agent.initramfs - ironic-python-agent.kernel - deploy_command - virtual-environment.yaml - baremetal-environment.yaml - kubernetes-environment.yaml - "{{ apex_env_file }}" - name: Copy ansible.cfg data to undercloud in aarch64 copy: src: "{{ apex_temp_dir }}/ansible.cfg" dest: "/home/stack/ansible.cfg" owner: stack group: stack mode: 0644 when: aarch64 - name: Copy network data to undercloud copy: src: "{{ apex_temp_dir }}/network_data.yaml" dest: "/home/stack/network_data.yaml" owner: stack group: stack mode: 0644 when: os_version != 'ocata' - copy: src: "{{ apex_temp_dir }}/storage-environment.yaml" dest: /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml owner: root group: root mode: 0664 - copy: src: "{{ apex_temp_dir }}/neutron-opendaylight-sriov.yaml" dest: /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-opendaylight-sriov.yaml owner: root group: root mode: 0664 - name: Remove Ceph OSD from ceph storage role lineinfile: path: /usr/share/openstack-tripleo-heat-templates/roles_data.yaml line: ' - OS::TripleO::Services::CephOSD' owner: root group: root state: absent become: yes - name: Insert Ceph OSDs into Compute role lineinfile: path: /usr/share/openstack-tripleo-heat-templates/roles_data.yaml insertbefore: '^\s*-\sOS::TripleO::Services::NovaCompute$' line: ' - OS::TripleO::Services::CephOSD' owner: root group: root become: yes - name: Insert Ceph OSDs into Controller role lineinfile: path: /usr/share/openstack-tripleo-heat-templates/roles_data.yaml insertbefore: '^\s*-\sOS::TripleO::Services::CephRbdMirror$' line: ' - OS::TripleO::Services::CephOSD' owner: root group: root become: yes - name: Insert External network into Compute role shell: | ruby -e ' require "yaml" data = YAML.load(File.read("/usr/share/openstack-tripleo-heat-templates/roles_data.yaml")) if data[1]["networks"].is_a?(Array) data[1]["networks"].push("External") elsif data[1]["networks"].is_a?(Hash) data[1]["networks"].merge!("External"=> { "subnet" => "external_subnet" }) else raise "Unable to determine data to modify in roles_data.yaml" end data[1]["default_route_networks"] = Array.new(["External"]) File.open("/usr/share/openstack-tripleo-heat-templates/roles_data.yaml", "w") { |f| f.write(data.to_yaml) } ' become: yes - name: Upload glance images shell: "{{ stackrc }} && openstack overcloud image upload" become: yes become_user: stack - name: Import inventory (baremetal) shell: "{{ stackrc }} && openstack overcloud node import instackenv.json" when: introspect - name: Introspect inventory (baremetal) shell: "{{ stackrc }} && openstack overcloud node introspect --all-manageable --provide" when: introspect - name: Import inventory (virtual) shell: "{{ stackrc }} && openstack overcloud node import --provide instackenv.json" when: not introspect - name: Set flavors shell: '{{ stackrc }} && openstack flavor set --property "cpu_arch"="{{ ansible_architecture }}" {{ item }}' with_items: - baremetal - control - compute - name: Re-enable ceph config for aarch64 replace: path: "/usr/share/ceph-ansible/roles/ceph-client/tasks/create_users_keys.yml" regexp: "x86_64" replace: "aarch64" backup: yes when: aarch64 - name: Configure DNS server for ctlplane network shell: "{{ stackrc }} && openstack subnet set ctlplane-subnet {{ dns_server_args }}" - name: Update NIC templates before deployment shell: > /usr/share/openstack-tripleo-heat-templates/tools/merge-new-params-nic-config-script.py -n /home/stack/network_data.yaml -t /home/stack/nics/{{ item }}.yaml --discard-comments True --role-name Controller become: yes become_user: stack with_items: - controller - compute - block: - name: Execute Overcloud Deployment shell: "{{ stackrc }} && bash deploy_command" become: yes become_user: stack rescue: - name: Show overcloud failures shell: "{{ stackrc }} && openstack stack failures list overcloud --long" become: yes become_user: stack always: - name: Archive Mistral logs archive: path: - /var/lib/mistral - /var/log/mistral dest: /root/mistral_logs.tar.gz become: yes - name: Fetch mistral logs fetch: src: /root/mistral_logs.tar.gz dest: "{{ apex_temp_dir }}/" flat: yes become: yes - name: Show Keystone output shell: "{{ overcloudrc }} && {{ item }}" when: debug and vim == 'openstack' with_items: - openstack endpoint list - openstack service list - name: Get overcloud nodes and IPs shell: "{{ stackrc }} && openstack server list -f json" register: nova_list - name: Write nova list output to file local_action: copy content="{{ nova_list.stdout }}" dest="{{ apex_temp_dir }}/nova_output" - name: Fetch overcloudrc fetch: src: /home/stack/overcloudrc dest: "{{ apex_temp_dir }}/" flat: yes