-
Notifications
You must be signed in to change notification settings - Fork 65
/
main.yml
274 lines (233 loc) · 8.24 KB
/
main.yml
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
---
- name: Update default validate_cert in vcenter_servers
set_fact:
vcs: >-
{%- set vc1 = [] -%}
{%- for vc in vcenter_servers -%}
{%- if vc.values()[0]['validate_certs'] is not defined -%}
{%- do vc1.append({vc.keys()[0]: vc.values()[0] |combine({'validate_certs': False})}) -%}
{%- else -%}
{%- do vc1.append(vc) -%}
{%- endif -%}
{%- endfor -%}
{{vc1}}
- name: update vcenter_servers var post validate_cert
set_fact:
vcenter_servers: "{{ vcs if vcs is defined and vcs else vcenter_servers }}"
- name: substitue default VM DVS values for overlay
set_fact:
vc_servers_dvs: >-
{%- set vc1 = [] -%}
{%- for vc in vcenter_servers -%}
{%- if vc.values()[0]['dv_switch'] is not defined -%}
{%- do vc1.append({vc.keys()[0]: vc.values()[0] |combine({'dv_switch': dv_switch})}) -%}
{%- else -%}
{%- do vc1.append(vc) -%}
{%- endif -%}
{%- endfor -%}
{{vc1}}
- name: update vcenter_servers var post VM DVS defaults
set_fact:
vcenter_servers: "{{ vc_servers_dvs }}"
when: vc_servers_dvs is defined and vc_servers_dvs
- name: substitue default VM DVS PG values
set_fact:
vc_servers_pg: >-
{%- set vc1 = [] -%}
{%- for vc in vcenter_servers -%}
{%- if vc.values()[0]['dv_port_group'] is not defined -%}
{%- do vc1.append({vc.keys()[0]: vc.values()[0] |combine({'dv_port_group': dv_port_group})}) -%}
{%- else -%}
{%- do vc1.append(vc) -%}
{%- endif -%}
{%- endfor -%}
{{vc1}}
- name: set vcenter_servers var post VM DVS PG defaults
set_fact:
vcenter_servers: "{{ vc_servers_pg }}"
when: vc_servers_pg is defined and vc_servers_pg
- name: create vcenter servers list of dicts
set_fact:
vc_servers: "{{ vc_servers | default ([]) + item.values() }}"
with_items: "{{ vcenter_servers }}"
- name: Update default validate_cert in esxihosts
set_fact:
esxihosts1: >-
{%- set ip1 = [] -%}
{%- for host in esxihosts -%}
{%- if host['validate_certs'] is not defined -%}
{%- do ip1.append(host | combine({'validate_certs': False})) -%}
{%- else -%}
{%- do ip1.append(host) -%}
{%- endif -%}
{%- endfor -%}
{{ip1}}
- name: set esxihosts var post validate_cert
set_fact:
esxihosts: "{{ esxihosts1 if esxihosts1 is defined and esxihosts1 else esxihosts }}"
- name: substitute default std fabric switch and pg values in esxihosts
set_fact:
esxihosts_std: >-
{%- set ip1 = [] -%}
{%- for host in esxihosts -%}
{%- if host['std_switch_list'] is not defined -%}
{%- do ip1.append(host | combine({'std_switch_list': [{'pg_name': std_pg_name, 'switch_name': std_switch_name}]})) -%}
{%- else -%}
{%- do ip1.append(host) -%}
{%- endif -%}
{%- endfor -%}
{{ip1}}
- name: set esxihosts var post std switch defaults
set_fact:
esxihosts: "{{ esxihosts_std }}"
when: esxihosts_std is defined and esxihosts_std
- name: substitute vcenter in the esxi host
set_fact:
esxi_servers: >-
{%- set ip1 = [] -%}
{%- for host in esxihosts -%}
{%- for vcsrv in vcenter_servers -%}
{%- if host['vcenter_server'] == vcsrv.keys()[0] -%}
{%- do ip1.append(host | combine({'vcenter_server': vcsrv.values()[0]})) -%}
{%- endif -%}
{%- endfor -%}
{%- endfor -%}
{{ip1}}
- name: Create Datacenters
vmware_datacenter:
hostname: "{{ item.hostname }}"
username: "{{ item.username }}"
password: "{{ item.password }}"
validate_certs: "{{ item.validate_certs }}"
datacenter_name: "{{ item.datacentername }}"
state: present
with_items: "{{ vc_servers }}"
- name: Create Clusters in all DCs
include: clusters.yml vc_server={{server}}
with_items: "{{ vc_servers }}"
loop_control:
loop_var: server
- name: Add esxi hosts to cluster
include: esxi_hosts.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
- name: Wait for add host task complete
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ added_hosts }}"
register: add_host
until: add_host.finished
retries: 300
- name: Remove esxi maintenance mode
include: maint_mode.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
- name: Wait for maintenance mode task complete
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ maint_mode }}"
register: r2
until: r2.finished
retries: 300
- name: Add VM DVS in all DCs
include: add_dvs.yml vc_server={{item}}
with_items: "{{ vc_servers }}"
- name: Fix VM DVS-PGs and add pvlan config
include: fix_dvs.yml vc_server={{item}}
with_items: "{{ vc_servers }}"
- name: Wait for VM DVS-PG pvlan fix task
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ dvs_fixed }}"
register: t1
until: t1.finished
retries: 300
- name: add esxi host to DVS
include: add_host_dvs.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
- name: create fabric PG in esxi host
include: add_fab_pg.yml esxi_host={{item}}
when: item.std_switch_list is defined
with_items: "{{ esxi_servers }}"
- name: Wait for fabric PG completion
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ pgs_completed }}"
register: pg_completed
until: pg_completed.finished
retries: 300
when: pgs_completed is defined
- name: Update agent_vm settings of esxi host
include: agent_vm_settings.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
when: auto_deploy
- name: Copy ContrailVM MAC to esxi host
include: copy_vm_vars_to_esxi.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
when: auto_deploy
- name: Create contrail compute vm in esxi host
include: create_contrail_vm.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
when: not auto_deploy
- name: Wait for contrailVm create completion
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ vms_created }}"
register: vm_completed
until: vm_completed.finished
retries: 300
when: not auto_deploy
- name: Deploy ContrailVM from ESX Agent Manager
include: eam_deploy_vm.yml server={{item}}
with_items: "{{ vc_servers }}"
when: auto_deploy
- name: Check ContrailVM deployed on esxi host
include: check_contrailvm_deploy.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
when: auto_deploy
- name: Rename ContrailVM
include: rename_contrailvm.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
when: auto_deploy
- name: Add nics to ContrailVM
include: add_nic.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
- name: Wait for add nic completion
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ nics_added }}"
register: nic_completed
until: nic_completed.finished
retries: 300
- name: Fix contrailVM fab nic mac address
include: fix_mac.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
- name: Wait for mac address fix to complete
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ mac_changed }}"
register: mac_fixed
until: mac_fixed.finished
retries: 300
- name: Add pci nics to ContrailVM
include: add_pci_nics.yml esxi_host={{item}}
when: item.contrail_vm.pci_devices is defined and item.contrail_vm.pci_devices
with_items: "{{ esxi_servers }}"
- name: Wait for pci nic add completion
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ pci_nics_added }}"
register: pci_nic_completed
until: pci_nic_completed.finished
retries: 300
when: pci_nics_added is defined and pci_nics_added
- name: Add sriov nics to ContrailVM
include: add_sriov_nics.yml esxi_host={{item}}
when: item.contrail_vm.sr_iov_nics is defined and item.contrail_vm.sr_iov_nics
with_items: "{{ esxi_servers }}"
- name: Wait for sriov nic add completion
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ sriov_nics_added }}"
register: sriov_nic_completed
until: sriov_nic_completed.finished
retries: 300
when: sriov_nics_added is defined and sriov_nics_added
- name: Power on ContrailVMs
include: power_on_vm.yml esxi_host={{item}}
with_items: "{{ esxi_servers }}"
- name: Wait for VM power on task complete
async_status: jid={{ item.ansible_job_id }}
with_items: "{{ powerd_on }}"
register: power_on
until: power_on.finished
retries: 300