18ddab48d9ccb48c8a14091792d5832965c41b3b
[apex.git] / lib / ansible / playbooks / deploy_overcloud.yml
1 ---
2 - hosts: all
3   tasks:
4     - name: Copy all files to undercloud
5       copy:
6         src: "{{ apex_temp_dir }}/{{ item }}"
7         dest: "/home/stack/{{ item }}"
8         owner: stack
9         group: stack
10         mode: 0644
11       with_items:
12         - network-environment.yaml
13         - instackenv.json
14         - overcloud-full.qcow2
15         - deploy_command
16         - virtual-environment.yaml
17         - baremetal-environment.yaml
18         - "{{ apex_env_file }}"
19     - name: Copy network data to undercloud
20       copy:
21         src: "{{ apex_temp_dir }}/network_data.yaml"
22         dest: "/home/stack/network_data.yaml"
23         owner: stack
24         group: stack
25         mode: 0644
26       when: os_version != 'ocata'
27     - copy:
28         src: "{{ apex_temp_dir }}/storage-environment.yaml"
29         dest: /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml
30         owner: root
31         group: root
32         mode: 0664
33     - copy:
34         src: "{{ apex_temp_dir }}/neutron-opendaylight-sriov.yaml"
35         dest: /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-sriov.yaml
36         owner: root
37         group: root
38         mode: 0664
39     - systemd:
40         name: openstack-swift-proxy
41         state: restarted
42         enabled: yes
43       become: yes
44     - name: Workaround to downgrade pacemaker (LP#1770692)
45       block:
46         - name: Pull haproxy container
47           shell: docker pull {{ undercloud_ip }}:8787/tripleo{{ os_version }}/centos-binary-haproxy:current-tripleo-rdo
48         - name: Find container pacemaker version
49           shell: docker run {{ undercloud_ip }}:8787/tripleo{{ os_version }}/centos-binary-haproxy:current-tripleo-rdo /bin/rpm -q pacemaker
50           register: pcs_version
51         - name: Create centos74 repo (contains older pacemaker)
52           copy:
53             dest: /tmp/centos74.repo
54             content: |
55               [centos74-updates]
56               name=CentOS-74 - Updates
57               baseurl=http://mirror.centos.org/centos/7.4.1708/updates/$basearch/
58               gpgcheck=1
59               gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
60               enabled=1
61             mode: 0644
62         - name: Install container pacemaker version to overcloud image
63           shell: >
64             LIBGUESTFS_BACKEND=direct virt-customize -a /home/stack/overcloud-full.qcow2
65             --upload /tmp/centos74.repo:/etc/yum.repos.d/
66             --run-command "yum remove -y pacemaker-cluster-libs pacemaker-libs pacemaker pacemaker-cli"
67             --run-command "yum install -y {{ pcs_version.stdout }}" -v
68             --install "pcs"
69       become: yes
70       when: ha_enabled
71     - name: Remove Ceph OSD from ceph storage role
72       lineinfile:
73         path: /usr/share/openstack-tripleo-heat-templates/roles_data.yaml
74         line: '    - OS::TripleO::Services::CephOSD'
75         owner: root
76         group: root
77         state: absent
78       become: yes
79     - name: Insert Ceph OSDs into Compute role
80       lineinfile:
81         path: /usr/share/openstack-tripleo-heat-templates/roles_data.yaml
82         insertbefore:  '^\s*-\sOS::TripleO::Services::NovaCompute$'
83         line: '    - OS::TripleO::Services::CephOSD'
84         owner: root
85         group: root
86       become: yes
87     - name: Upload glance images
88       shell: "{{ stackrc }} && openstack overcloud image upload"
89       become: yes
90       become_user: stack
91     - name: Import inventory (baremetal)
92       shell: "{{ stackrc }} && openstack overcloud node import instackenv.json"
93       when: introspect
94     - name: Introspect inventory (baremetal)
95       shell: "{{ stackrc }} && openstack overcloud node introspect --all-manageable --provide"
96       when: introspect
97     - name: Import inventory (virtual)
98       shell: "{{ stackrc }} && openstack overcloud node import --provide instackenv.json"
99       when: not introspect
100     - name: Set flavors
101       shell: '{{ stackrc }} && openstack flavor set --property "cpu_arch"="{{ ansible_architecture }}" {{ item }}'
102       with_items:
103         - baremetal
104         - control
105         - compute
106     - name: Configure DNS server for ctlplane network
107       shell: "{{ stackrc }} && openstack subnet set ctlplane-subnet {{ dns_server_args }}"
108     - block:
109         - name: Execute Overcloud Deployment
110           shell: "{{ stackrc }} && bash deploy_command"
111
112       rescue:
113         - name: Show overcloud failures
114           shell: "{{ stackrc }} && openstack stack failures list overcloud --long"
115       become: yes
116       become_user: stack
117     - name: Show Keystone output
118       shell: "{{ overcloudrc }} && {{ item }}"
119       when: debug
120       with_items:
121         - openstack endpoint list
122         - openstack service list
123     - name: Get overcloud nodes and IPs
124       shell: "{{ stackrc }} && openstack server list -f json"
125       register: nova_list
126     - name: Write nova list output to file
127       local_action: copy content="{{ nova_list.stdout }}" dest="{{ apex_temp_dir }}/nova_output"
128     - name: Fetch overcloudrc
129       fetch:
130         src: /home/stack/overcloudrc
131         dest: "{{ apex_temp_dir }}/"
132         flat: yes