96080e5f7cf1ef13b0c3d45c66de79ad0f5a3e54
[apex.git] / lib / ansible / playbooks / configure_undercloud.yml
1 ---
2 - hosts: all
3   tasks:
4     - name: Generate SSH key for stack if missing
5       shell: test -e ~/.ssh/id_rsa || ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
6     - name: Fix ssh key for stack
7       shell: restorecon -r /home/stack
8       become: yes
9     - file:
10         path: /home/stack/nics
11         state: directory
12         owner: stack
13         group: stack
14         mode: 0775
15     - copy:
16         src: /root/.ssh/id_rsa.pub
17         dest: /home/stack/jumphost_id_rsa.pub
18         owner: stack
19         group: stack
20         mode: 0644
21     - copy:
22         src: "{{ apex_temp_dir }}/{{ item }}.yaml"
23         dest: "/home/stack/nics/{{ item }}.yaml"
24         owner: stack
25         group: stack
26         mode: 0644
27       with_items:
28         - controller
29         - compute
30     - lineinfile:
31         path: /etc/sudoers
32         regexp: 'Defaults\s*requiretty'
33         state: absent
34       become: yes
35     - lineinfile:
36         path: /etc/environment
37         regexp: '^http_proxy'
38         line: "http_proxy={{ http_proxy }}"
39       become: yes
40       when: http_proxy
41     - lineinfile:
42         path: /etc/environment
43         regexp: '^https_proxy'
44         line: "https_proxy={{ https_proxy }}"
45       become: yes
46       when: https_proxy
47     - name: openstack-configs undercloud
48       shell: openstack-config --set undercloud.conf DEFAULT {{ item }}
49       with_items: "{{ undercloud_config }}"
50     - name: openstack-configs undercloud network
51       shell: openstack-config --set undercloud.conf ctlplane-subnet {{ item }}
52       with_items: "{{ undercloud_network_config }}"
53     - block:
54         - name: undercloud install
55           shell: openstack undercloud install &> apex-undercloud-install.log
56           become: yes
57           become_user: stack
58       rescue:
59         - name: undercloud install retry
60           shell: openstack undercloud install >> apex-undercloud-install.log 2>&1
61           become: yes
62           become_user: stack
63       always:
64         - name: fetch undercloud log
65           fetch:
66             src: /home/stack/apex-undercloud-install.log
67             dest: "{{ apex_temp_dir }}/"
68             flat: yes
69     - name: openstack-configs nova
70       shell: openstack-config --set /var/lib/config-data/nova/etc/nova/nova.conf DEFAULT {{ item }}
71       become: yes
72       with_items: "{{ nova_config }}"
73     - name: restart nova services
74       docker_container:
75         name: "{{ item }}"
76         state: started
77         restart: yes
78       with_items:
79         - nova_conductor
80         - nova_compute
81         - nova_api
82         - nova_scheduler
83     - name: openstack-configs neutron
84       shell: openstack-config --set /var/lib/config-data/neutron/etc/neutron/neutron.conf DEFAULT {{ item }}
85       become: yes
86       with_items: "{{ neutron_config }}"
87     - name: restart neutron services
88       docker_container:
89         name: "{{ item }}"
90         state: started
91         restart: yes
92       with_items:
93         - neutron_api
94         - neutron_dhcp
95     - name: openstack-configs ironic
96       shell: openstack-config --set /var/lib/config-data/ironic/etc/ironic/ironic.conf {{ item }}
97       become: yes
98       with_items: "{{ ironic_config }}"
99     - name: restart ironic services
100       docker_container:
101         name: "{{ item }}"
102         state: started
103         restart: yes
104       with_items:
105         - ironic_api
106         - ironic_conductor
107         - ironic_inspector
108     # will need to modify the below to patch the container
109     - lineinfile:
110         path: /usr/lib/python2.7/site-packages/ironic/common/pxe_utils.py
111         regexp: '_link_ip_address_pxe_configs'
112         line: '        _link_mac_pxe_configs(task)'
113       when: aarch64
114     - name: configure external network vlan ifcfg
115       template:
116         src: external_vlan_ifcfg.yml.j2
117         dest: "/etc/sysconfig/network-scripts/ifcfg-vlan{{ external_network.vlan }}"
118         owner: root
119         group: root
120         mode: 0644
121       become: yes
122       when:
123         - external_network.vlan != "native"
124         - external_network.enabled
125     - name: bring up vlan ifcfg
126       shell: "ifup vlan{{ external_network.vlan }}"
127       become: yes
128       when:
129         - external_network.vlan != "native"
130         - external_network.enabled
131     - name: assign IP to native eth2
132       shell: ip a a {{ external_network.ip }}/{{ external_network.prefix }} dev eth2
133       become: yes
134       when:
135         - external_network.vlan == "native"
136         - external_network.enabled
137         - not aarch64
138     - name: bring up eth2
139       shell: ip link set up dev eth2
140       when:
141         - external_network.vlan == "native"
142         - external_network.enabled
143         - not aarch64
144       become: yes
145     - name: assign IP to native eth0 if aarch64
146       shell: ip a a {{ external_network.ip }}/{{ external_network.prefix }} dev eth0
147       become: yes
148       when:
149         - external_network.vlan == "native"
150         - external_network.enabled
151         - aarch64
152     - name: bring up eth0 if aarch64
153       shell: ip link set up dev eth0
154       when:
155         - external_network.vlan == "native"
156         - external_network.enabled
157         - aarch64
158       become: yes
159     - block:
160         - name: Undercloud NAT - MASQUERADE interface
161           iptables:
162             table: nat
163             chain: POSTROUTING
164             out_interface: eth0
165             jump: MASQUERADE
166         - name: Undercloud NAT - MASQUERADE interface with subnet
167           iptables:
168             table: nat
169             chain: POSTROUTING
170             out_interface: eth0
171             jump: MASQUERADE
172             source: "{{ nat_cidr }}"
173         - name: Undercloud NAT - Allow Forwarding
174           iptables:
175             chain: FORWARD
176             in_interface: eth2
177             jump: ACCEPT
178         - name: Undercloud NAT - Allow Stateful Forwarding
179           iptables:
180             chain: FORWARD
181             in_interface: eth2
182             jump: ACCEPT
183             source: "{{ nat_cidr }}"
184             ctstate: ESTABLISHED,RELATED
185         - name: Undercloud NAT - Save iptables
186           shell: service iptables save
187       become: yes
188       when:
189         - not nat_network_ipv6
190         - nat
191     - name: fetch storage environment file
192       fetch:
193         src: /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml
194         dest: "{{ apex_temp_dir }}/"
195         flat: yes
196     - name: fetch sriov environment file
197       fetch:
198         src: /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-opendaylight-sriov.yaml
199         dest: "{{ apex_temp_dir }}/"
200         flat: yes
201     - name: Restorecon for root ssh
202       shell: restorecon -r -v /root/.ssh
203       become: yes
204
205 - include: undercloud_aarch64.yml
206   when: aarch64