forked from infobloxopen/vnios_ztp_vmware
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvnios_ztp_vmware.yaml
227 lines (198 loc) · 7.87 KB
/
vnios_ztp_vmware.yaml
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
---
- hosts: localhost
connection: local
vars_prompt:
- name: "gm_license"
prompt : "Please enter vnios license strings separated by a space for grid master(ex. nios IB-V815 enterprise dns dhcp cloud)"
private: no
- name: "member_license"
prompt: "Please enter vnios license strings separated by a space for members(ex. nios IB-V1425 enterprise)"
private: no
##Following cloud-init license strings separated by a space can be used in this playbook
## String License description
## nios NIOS license
## dns DNS server
## dhcp DHCP server
## enterprise Grid license
## vnios vNIOS license
## cloud Cloud Network Automation
## cloud_api Cloud Platform license
## load_bal Load Balancer license
## ms_management Microsoft management license
## qrd Query Redirection license
## dnsqrw DNS Query Rewrite license
## dtc DNS Traffic Control license
## rpz Response Policy Zones license
## fireeye FireEye license
## threat_anl Threat Analytics license
## sw_tp Threat Protection (Software add-on) license
## tp_sub Threat Protection Update license
## sec_eco Security Ecosystem license
## flex_grid Flex Grid Activation ("Organization") license
vars:
#vcenter server fqdn or IP
vc_hostname: "x.x.x.x"
#vcenter server user_id
vc_username: "root"
#vcenter server password
vc_password: "password"
#vcenter server datacenter name
vc_datacenter: "India"
#vcenter server cluster name
vc_cluster: "Compute"
#vcenter server datastore name
vc_datastore: "Dell_Datastore_10TB_1"
#vcenter network name connected to vnios
vm_network: "Internet-200-24"
nios_details:
grid_master:
name: "{{ lookup('ini', 'name section=gm file=nios_details.ini') }}"
ip: "{{ lookup('ini', 'ip_address section=gm file=nios_details.ini') }}"
netmask: "{{ lookup('ini', 'netmask section=gm file=nios_details.ini') }}"
gw: "{{ lookup('ini', 'gateway section=gm file=nios_details.ini') }}"
member01:
name: "{{ lookup('ini', 'name section=member01 file=nios_details.ini') }}"
ip: "{{ lookup('ini', 'ip_address section=member01 file=nios_details.ini') }}"
netmask: "{{ lookup('ini', 'netmask section=member01 file=nios_details.ini') }}"
gw: "{{ lookup('ini', 'gateway section=member01 file=nios_details.ini') }}"
member02:
name: "{{ lookup('ini', 'name section=member02 file=nios_details.ini') }}"
ip: "{{ lookup('ini', 'ip_address section=member02 file=nios_details.ini') }}"
netmask: "{{ lookup('ini', 'netmask section=member02 file=nios_details.ini') }}"
gw: "{{ lookup('ini', 'gateway section=member02 file=nios_details.ini') }}"
nios_provider:
host: "{{ lookup('ini', 'ip_address section=gm file=nios_details.ini') }}"
username: "{{ lookup('ini', 'user_id section=grid_details file=nios_details.ini') }}"
password: "{{ lookup('ini', 'password section=grid_details file=nios_details.ini') }}"
wapi_version: 2.6
tasks:
- name: Deploy gridmaster
vmware_deploy_ovf:
hostname: "{{ vc_hostname }}"
username: "{{ vc_username }}"
password: "{{ vc_password }}"
datacenter: "{{ vc_datacenter }}"
cluster: "{{ vc_cluster }}"
datastore: "{{ vc_datastore }}"
name: "{{item.value.name}}"
networks: "{u'VM Network':u'{{ vm_network }}'}"
disk_provisioning: "thin"
validate_certs: no
power_on: no
#absolute path of the vnios ovf file
ovf: /root/nios_ztp_vmware/nios-8.1.6-360192-2017-08-25-21-04-00-ddi.ova
inject_ovf_env: yes
properties:
temp_license: "{{gm_license}}"
lan1-v4_addr: "{{item.value.ip}}"
lan1-v4_netmask: "{{item.value.netmask}}"
lan1-v4_gw: "{{item.value.gw}}"
default_admin_password: infoblox
with_dict: "{{ nios_details }}"
when: "'member01' not in item.key and 'member02' not in item.key"
- name: Deploy members
vmware_deploy_ovf:
hostname: "{{ vc_hostname }}"
username: "{{ vc_username }}"
password: "{{ vc_password }}"
datacenter: "{{ vc_datacenter }}"
cluster: "{{ vc_cluster }}"
datastore: "{{ vc_datastore }}"
name: "{{item.value.name}}"
networks: "{u'VM Network':u'{{ vm_network }}'}"
disk_provisioning: "thin"
validate_certs: no
power_on: no
#absolute path of the vnios ovf file
ovf: /root/nios_ztp_vmware/nios-8.1.6-360192-2017-08-25-21-04-00-ddi.ova
inject_ovf_env: yes
properties:
temp_license: "{{member_license}}"
lan1-v4_addr: "{{item.value.ip}}"
lan1-v4_netmask: "{{item.value.netmask}}"
lan1-v4_gw: "{{item.value.gw}}"
default_admin_password: infoblox
with_dict: "{{ nios_details }}"
when: " 'grid_master' not in item.key"
- name: Modify member resources
vmware_guest:
hostname: "{{ vc_hostname }}"
username: "{{ vc_username }}"
password: "{{ vc_password }}"
name: "{{item.value.name}}"
state: present
validate_certs: no
hardware:
memory_mb: "{{ lookup('ini', 'mem_ram section=resources file=nios_details.ini') }}"
num_cpus: "{{ lookup('ini', 'mem_cpu section=resources file=nios_details.ini') }}"
with_dict: "{{nios_details}}"
when: "'grid_master' not in item.key"
- name: Modify gridmaster resources
vmware_guest:
hostname: "{{ vc_hostname }}"
username: "{{ vc_username }}"
password: "{{ vc_password }}"
name: "{{item.value.name}}"
state: present
validate_certs: no
hardware:
memory_mb: "{{ lookup('ini', 'gm_ram section=resources file=nios_details.ini') }}"
num_cpus: "{{ lookup('ini', 'gm_cpu section=resources file=nios_details.ini') }}"
with_dict: "{{nios_details}}"
when: "'member01' not in item.key and 'member02' not in item.key"
- name: Power on gridmaster and members
vmware_guest:
hostname: "{{ vc_hostname }}"
username: "{{ vc_username }}"
password: "{{ vc_password }}"
name: "{{item.value.name}}"
state: poweredon
validate_certs: no
with_dict: "{{nios_details}}"
- name: Wait for gridmaster to come online
command: curl --head --insecure "https://{{ lookup('ini', 'ip_address section=gm file=nios_details.ini') }}"
register: result
until: result.stdout.find("302 Found")!= -1
retries: 50
delay: 10
changed_when: false
- name: Wait for httpd service to be active
pause:
seconds: 20
- name: Pre-provision members in gridmaster
nios_member:
host_name: "{{item.value.name}}"
vip_setting:
- address: "{{item.value.ip}}"
subnet_mask: "{{item.value.netmask}}"
gateway: "{{item.value.gw}}"
config_addr_type: IPV4
platform: VNIOS
comment: "Created by Ansible"
state: present
provider: "{{ nios_provider }}"
with_dict: "{{nios_details}}"
when: "'grid_master' not in item.key"
- name: Wait for vnios members to come online
pause:
seconds: 15
- name: Add vnios members to the grid
uri:
url: "https://{{item.value.ip}}/wapi/v2.6/grid?_function=join&_return_as_object=1"
method: POST
user: "{{ lookup('ini', 'user_id section=grid_details file=nios_details.ini') }}"
password: "{{ lookup('ini', 'password section=grid_details file=nios_details.ini') }}"
status_code: 201,302,200
method: POST
header:
Content-Type: "application/json"
body:
grid_name: "{{ lookup('ini', 'grid_name section=grid_details file=nios_details.ini') }}"
shared_secret: "{{ lookup('ini', 'shared_secret section=grid_details file=nios_details.ini') }}"
master: "{{ lookup('ini', 'ip_address section=gm file=nios_details.ini') }}"
body_format: json
validate_certs: no
return_content: yes
with_dict: "{{nios_details}}"
when : "'grid_master' not in item.key"
...