summaryrefslogtreecommitdiffstats
path: root/lib/ansible/playbooks/deploy_overcloud.yml
blob: 39fbf52e8b136d1feda88ac2b7b9592353e8309f (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
---
- 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
        - 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