1 heat_template_version: 2013-05-23
3 description: vSeGW/vSRX Firewall Template
6 - label: System Settings
7 description: System Level Settings
16 description: Availability Zone
19 description: Unique name for this VNF instance
22 description: Unique ID for this VNF instance
24 # Note we are requesting a flavor with 10 physical CPU cores and may be limited by 16 vCPU flavor.
27 description: flavor type
28 # The image will be provided as a qcow2 KVM image.
31 description: Image use to boot a server
35 description: flavor type
38 description: Image use to boot a server
40 INTERNET_direct_net_id:
42 description: The Internet
46 description: Name of OAM mgmt network
48 oam_protected_net_0_id:
50 description: Name of OAM protected network
52 Mobility_OAM_protected_net_0_id:
54 description: Network name for OAM
58 description: Network name for GN network
60 Mobility_OAM_protected_net_1_id:
62 description: Network name for OAM
66 description: Network name for GN network
70 description: Name of HSL (Logging) network
73 description: HSL (Logging) network address (CIDR notation)
77 description: Dummi Parent Network for port
80 description: Dummi Parent Network for port
83 # description: Dummi Parent Network for port
86 # description: Dummi Parent Network for port
89 # description: Dummi Parent Network for port
92 # description: Dummi Parent Network for port
96 description: IPv4 prefix (CIDR notation)
99 description: IPv4 prefix (CIDR notation)
102 # description: IPv4 prefix (CIDR notation)
105 # description: IPv4 prefix (CIDR notation)
108 # description: IPv4 prefix (CIDR notation)
111 # description: IPv4 prefix (CIDR notation)
115 label: segw_0 port ens10 Ingress IP address alias_0
116 description: SeGW's Ingress interface IPv4 address, primary
119 label: segw_0 port ens10 Ingress IP address alias_1
120 description: SeGW's Ingress interface IPv4 address, alias 1
123 label: segw_0 port ens10 Ingress IP address alias_2
124 description: SeGW's Ingress interface IPv4 address, alias 2
128 label: segw_1 port ens10 Ingress IP address alias_0
129 description: SeGW's Ingress interface IPv4 address, primary
132 label: segw_1 port ens10 Ingress IP address alias_1
133 description: SeGW's Ingress interface IPv4 address, alias 1
136 label: segw_1 port ens10 Ingress IP address alias_2
137 description: SeGW's Ingress interface IPv4 address, alias 2
138 segw_0_oam_protected_ip:
140 label: segw_0 OAM MGMT IP address
141 description: segw_0 OAM MGMT IP address
142 segw_1_oam_protected_ip:
144 label: segw_1 OAM MGMT IP address
145 description: segw_1 OAM MGMT IP address
147 # vsrx_fw_0_GN_direct_ip:
149 # label: vsrx_fw_0 GN Direct IP address
150 # description: vsrx_fw_0 GN Direct IP address
151 # vsrx_fw_1_GN_direct_ip:
153 # label: vsrx_fw_1 GN Direct IP address
154 # description: vsrx_fw_1 GN Direct IP address
155 # vsrx_fw_2_OAM_protected_ip:
157 # label: vsrx_fw_2 OAM Protected IP address
158 # description: vsrx_fw_2 OAM Protected IP address
159 # vsrx_fw_3_OAM_protected_ip:
161 # label: vsrx_fw_3 OAM Protected IP address
162 # description: vsrx_fw_3 OAM Protected IP address
167 description: name of VM
171 description: name of VM
175 description: name of VM
179 description: name of VM
183 description: name of VM
187 description: name of VM
191 label: SEGW security group name
192 description: SEGW security group name
197 type: OS::Nova::ServerGroup
199 policies: ["anti-affinity"]
201 type: OS::Nova::ServerGroup
203 policies: ["anti-affinity"]
206 type: OS::Contrail::VirtualNetwork
208 name: { get_param: int_dummi0_net_id }
210 type: OS::Neutron::Subnet
212 network_id: { get_resource: Dummi0_net }
213 cidr: { get_param: int_dummi0_cidr }
216 type: OS::Contrail::VirtualNetwork
218 name: { get_param: int_dummi1_net_id }
220 type: OS::Neutron::Subnet
222 network_id: { get_resource: Dummi1_net }
223 cidr: { get_param: int_dummi1_cidr }
226 type: OS::Contrail::VirtualNetwork
228 name: { get_param: HSL_direct_net_id }
231 type: OS::Neutron::Subnet
233 network_id: { get_resource: hsl_direct_net }
234 cidr: { get_param: HSL_direct_net_cidr }
237 type: OS::Neutron::SecurityGroup
239 description: vscp security group
240 name: {get_param: security_group_name}
241 # Need to add any-any rule through GUI to get SCTP traffic to work - any-any rules are not supported in heat template
242 rules: [{"direction": egress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": 0.0.0.0/0},
243 {"direction": egress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": 0.0.0.0/0},
244 {"direction": egress, "ethertype": IPv4, "protocol": icmp, "remote_ip_prefix": 0.0.0.0/0},
245 {"direction": ingress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": tcp, "remote_ip_prefix": 0.0.0.0/0},
246 {"direction": ingress, "ethertype": IPv4, "port_range_min": 1, "port_range_max": 65535, "protocol": udp, "remote_ip_prefix": 0.0.0.0/0},
247 {"direction": ingress, "ethertype": IPv4, "protocol": icmp, "remote_ip_prefix": 0.0.0.0/0}
251 type: OS::Nova::Server
253 name: { get_param: segw_0_name }
254 image: { get_param: image_segw_name }
255 availability_zone: { get_param: availability_zone_0 }
256 flavor: { get_param: flavor_segw_name }
257 scheduler_hints: { group: { get_resource: SeGW_Affinity } }
259 - port: { get_resource: port_segw_0_oam_protected }
260 - port: { get_resource: port_segw_0_internet }
261 - port: { get_resource: port_segw_0_dummi }
263 vnf_id: { get_param: vnf_id }
265 port_segw_0_oam_protected:
266 type: OS::Neutron::Port
268 network: { get_param: oam_protected_net_0_id }
269 fixed_ips: [{"ip_address": {get_param: segw_0_oam_protected_ip}}]
270 security_groups: [{get_resource: segw_security_group}]
272 port_segw_0_internet:
273 type: OS::Neutron::Port
275 network: { get_param: INTERNET_direct_net_id }
276 fixed_ips: [{"ip_address": {get_param: segw_0_inet_ip_0}}, {"ip_address": {get_param: segw_0_inet_ip_1}}, {"ip_address": {get_param: segw_0_inet_ip_2}}]
277 security_groups: [{get_resource: segw_security_group}]
280 type: OS::Neutron::Port
282 network: { get_resource: Dummi0_net }
283 security_groups: [{get_resource: segw_security_group}]
286 type: OS::Nova::Server
288 name: { get_param: segw_1_name }
289 image: { get_param: image_segw_name }
290 availability_zone: { get_param: availability_zone_0 }
291 flavor: { get_param: flavor_segw_name }
292 scheduler_hints: { group: { get_resource: SeGW_Affinity } }
294 - port: { get_resource: port_segw_1_oam_protected }
295 - port: { get_resource: port_segw_1_internet }
296 - port: { get_resource: port_segw_1_dummi }
298 vnf_id: { get_param: vnf_id }
300 port_segw_1_oam_protected:
301 type: OS::Neutron::Port
303 network: { get_param: oam_protected_net_0_id }
304 fixed_ips: [{"ip_address": {get_param: segw_1_oam_protected_ip}}]
305 security_groups: [{get_resource: segw_security_group}]
307 port_segw_1_internet:
308 type: OS::Neutron::Port
310 network: { get_param: INTERNET_direct_net_id }
311 fixed_ips: [{"ip_address": {get_param: segw_1_inet_ip_0}}, {"ip_address": {get_param: segw_1_inet_ip_1}}, {"ip_address": {get_param: segw_1_inet_ip_2}}]
312 security_groups: [{get_resource: segw_security_group}]
315 type: OS::Neutron::Port
317 network: { get_resource: Dummi1_net }
318 security_groups: [{get_resource: segw_security_group}]
321 type: OS::Nova::Server
323 name: { get_param: vsrx_fw_0_name }
324 image: { get_param: image_vsrxfw_name }
325 availability_zone: { get_param: availability_zone_0 }
326 flavor: { get_param: flavor_vsrxfw_name }
327 scheduler_hints: { group: { get_resource: vSRXFW_Affinity } }
329 - port: { get_resource: port_vsrx_fw_0_oam_mgmt }
330 - port: { get_resource: port_vsrx_fw_0_dummi }
331 - port: { get_resource: port_vsrx_fw_0_GN }
332 - port: { get_resource: port_vsrx_fw_0_HSL }
335 vnf_id: { get_param: vnf_id }
337 port_vsrx_fw_0_oam_mgmt:
338 type: OS::Neutron::Port
340 network: { get_param: oam_mgmt_net_0_id }
341 security_groups: [{get_resource: segw_security_group}]
343 port_vsrx_fw_0_dummi:
344 type: OS::Neutron::Port
346 network: { get_resource: Dummi0_net }
347 security_groups: [{get_resource: segw_security_group}]
350 type: OS::Neutron::Port
352 network: { get_param: GN_direct_net_0_id }
353 # fixed_ips: [{"ip_address": {get_param: vsrx_fw_0_GN_direct_ip}}]
354 security_groups: [{get_resource: segw_security_group}]
357 type: OS::Neutron::Port
359 network: { get_resource: hsl_direct_net }
360 security_groups: [{get_resource: segw_security_group}]
363 type: OS::Nova::Server
365 name: { get_param: vsrx_fw_1_name }
366 image: { get_param: image_vsrxfw_name }
367 availability_zone: { get_param: availability_zone_0 }
368 flavor: { get_param: flavor_vsrxfw_name }
369 scheduler_hints: { group: { get_resource: vSRXFW_Affinity } }
371 - port: { get_resource: port_vsrx_fw_1_oam_mgmt }
372 - port: { get_resource: port_vsrx_fw_1_dummi }
373 - port: { get_resource: port_vsrx_fw_1_GN }
374 - port: { get_resource: port_vsrx_fw_1_HSL }
377 vnf_id: { get_param: vnf_id }
379 port_vsrx_fw_1_oam_mgmt:
380 type: OS::Neutron::Port
382 network: { get_param: oam_mgmt_net_0_id }
383 security_groups: [{get_resource: segw_security_group}]
385 port_vsrx_fw_1_dummi:
386 type: OS::Neutron::Port
388 network: { get_resource: Dummi1_net }
389 security_groups: [{get_resource: segw_security_group}]
392 type: OS::Neutron::Port
394 network: { get_param: GN_direct_net_1_id }
395 # fixed_ips: [{"ip_address": {get_param: vsrx_fw_1_GN_direct_ip}}]
396 security_groups: [{get_resource: segw_security_group}]
399 type: OS::Neutron::Port
401 network: { get_resource: hsl_direct_net }
402 security_groups: [{get_resource: segw_security_group}]
405 type: OS::Nova::Server
407 name: { get_param: vsrx_fw_2_name }
408 image: { get_param: image_vsrxfw_name }
409 availability_zone: { get_param: availability_zone_0 }
410 flavor: { get_param: flavor_vsrxfw_name }
411 scheduler_hints: { group: { get_resource: vSRXFW_Affinity } }
413 - port: { get_resource: port_vsrx_fw_2_oam_mgmt }
414 - port: { get_resource: port_vsrx_fw_2_dummi }
415 - port: { get_resource: port_vsrx_fw_2_OAM }
416 - port: { get_resource: port_vsrx_fw_2_HSL }
419 vnf_id: { get_param: vnf_id }
421 port_vsrx_fw_2_oam_mgmt:
422 type: OS::Neutron::Port
424 network: { get_param: oam_mgmt_net_0_id }
425 security_groups: [{get_resource: segw_security_group}]
427 port_vsrx_fw_2_dummi:
428 type: OS::Neutron::Port
430 network: { get_resource: Dummi0_net }
431 security_groups: [{get_resource: segw_security_group}]
434 type: OS::Neutron::Port
436 network: { get_param: Mobility_OAM_protected_net_0_id }
437 # fixed_ips: [{"ip_address": {get_param: vsrx_fw_2_OAM_protected_ip}}]
438 security_groups: [{get_resource: segw_security_group}]
441 type: OS::Neutron::Port
443 network: { get_resource: hsl_direct_net }
444 security_groups: [{get_resource: segw_security_group}]
447 type: OS::Nova::Server
449 name: { get_param: vsrx_fw_3_name }
450 image: { get_param: image_vsrxfw_name }
451 availability_zone: { get_param: availability_zone_0 }
452 flavor: { get_param: flavor_vsrxfw_name }
453 scheduler_hints: { group: { get_resource: vSRXFW_Affinity } }
455 - port: { get_resource: port_vsrx_fw_3_oam_mgmt }
456 - port: { get_resource: port_vsrx_fw_3_dummi }
457 - port: { get_resource: port_vsrx_fw_3_OAM }
458 - port: { get_resource: port_vsrx_fw_3_HSL }
461 vnf_id: { get_param: vnf_id }
463 port_vsrx_fw_3_oam_mgmt:
464 type: OS::Neutron::Port
466 network: { get_param: oam_mgmt_net_0_id }
467 security_groups: [{get_resource: segw_security_group}]
469 port_vsrx_fw_3_dummi:
470 type: OS::Neutron::Port
472 network: { get_resource: Dummi1_net }
473 security_groups: [{get_resource: segw_security_group}]
476 type: OS::Neutron::Port
478 network: { get_param: Mobility_OAM_protected_net_1_id }
479 # fixed_ips: [{"ip_address": {get_param: vsrx_fw_3_OAM_protected_ip}}]
480 security_groups: [{get_resource: segw_security_group}]
483 type: OS::Neutron::Port
485 network: { get_resource: hsl_direct_net }
486 security_groups: [{get_resource: segw_security_group}]
504 - get_param: env_type
524 create_prod_res: {equals : [{get_param: env_type}, "prod"]}