Fixes undercloud install failure with setting hostname
[apex.git] / lib / ansible / playbooks / deploy_overcloud.yml
index 3313bc8..44470da 100644 (file)
       with_items:
         - network-environment.yaml
         - instackenv.json
-        - opnfv-environment.yaml
         - 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
-    - systemd:
-        name: openstack-swift-proxy
-        state: restarted
-        enabled: yes
+    - 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"))
+        data[1]["networks"].push("External")
+        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 }} && {{ item }}"
-      with_items:
-        - openstack overcloud node import instackenv.json
-        - openstack overcloud node introspect --all-manageable --provide
-      when: not virtual
+      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: virtual
+      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: Execute Overcloud Deployment
-      shell: "{{ stackrc }} && bash deploy_command"
+    - 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
+      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
+      when: debug and vim == 'openstack'
       with_items:
         - openstack endpoint list
         - openstack service list