summaryrefslogtreecommitdiffstats
path: root/lib/ansible/playbooks/deploy_overcloud.yml
blob: b8fb49385112a449c7e4e2cdf0d26d0124ac1b61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
---
- 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 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: 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: Downgrade ceph
      yum:
        allow_downgrade: yes
        name: ceph-ansible-3.1.6
      become: yes
    - name: Configure DNS server for ctlplane network
      shell: "{{ stackrc }} && openstack subnet set ctlplane-subnet {{ dns_server_args }}"
    - 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