1 heat_template_version: 2015-04-30
4 HOT template to create a vIPR-ATM firwall service instance.
5 This template creates the following
6 - Contrail Port Tuple for this firwall service instance
7 - Virtual machine interfaces and IP addresses attached to the two
8 service virtual networks. These virtual machine interfaces will be used
9 by the vIPR firewall service instance
10 - Neutron ports for OAM, HA0, and HA1 networks
11 - OS::Nova::Server with the created virtual machine interface and ports. This
12 is the firewall service instance virtual machine.
18 - custom_constraint: neutron.network
19 description: This network must currently exist.
20 description: Neutron UUID for the managemnet network name of the vIPR-ATM firewall
21 vipr_atm_oam_net_security_groups:
22 type: comma_delimited_list
23 description: List of the security group to apply to the vIPR-ATM firewall management port
25 vipr_atm_service_left_fqdn:
28 - allowed_pattern: ^(?:[^:]{1,64}:){2}(?:[^:]{1,255})$
30 A valid Contrail FQDN that contains three parts seperated by ':'.
31 The first two part are 1 to 64 characters long and must not contain ':'.
32 The third part is 1 to 255 characters long and must not contain ':'.
33 description: FQDN of the Left service network for the vIPR-ATM firewall
35 vipr_atm_service_right_fqdn:
38 - allowed_pattern: ^(?:[^:]{1,64}:){2}(?:[^:]{1,255})$
40 A valid Contrail FQDN that contains three parts seperated by ':'.
41 The first two part are 1 to 64 characters long and must not contain ':'.
42 The third part is 1 to 255 characters long and must not contain ':'.
43 description: FQDN of the Right service network for the vIPR-ATM firewall
48 - custom_constraint: neutron.network
49 description: This network must currently exist.
50 description: Neutron UUID of the first high availability network for the vIPR-ATM firewall
54 - allowed_pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
55 description: A valid IPv4 dot quad IP address.
56 description: Fixed IP to apply to the vIPR-ATM firewall ha0 port
57 vipr_atm_ha_one_security_groups:
58 type: comma_delimited_list
59 description: List of the security group to apply to the vIPR-ATM firewall ha0 port
64 - custom_constraint: neutron.network
65 description: This network must currently exist.
66 description: Neutron UUID of the second high availability network for the vIPR-ATM firewal
70 - allowed_pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
71 description: A valid IPv4 dot quad IP address.
72 description: Fixed IP to apply to the vIPR-ATM firewall ha1 port
73 vipr_atm_ha_two_security_groups:
74 type: comma_delimited_list
75 description: List of the security group to apply to the vIPR-ATM firewall ha1 port
77 vipr_atm_contrail_service_instance_fqdn:
80 - allowed_pattern: ^(?:[^:]{1,64}:){2}(?:[^:]{1,255})$
82 A valid Contrail FQDN that contains three parts seperated by ':'.
83 The first two part are 1 to 64 characters long and must not contain ':'.
84 The third part is 1 to 255 characters long and must not contain ':'.
85 description: FQDN of the vIPR-ATM firewall Contrail service instance for the port tuple
90 - length: { min: 1, max: 255 }
91 description: A string with length of at least 1 and less than 255.
92 description: Name of the vIPR-ATM firewall virtual machine
96 - custom_constraint: glance.image
97 description: This image must currently exist.
98 description: Image name of the vIPR-ATM firewall virtual machine
102 - custom_constraint: nova.flavor
103 description: This flavor must currently exist.
104 description: Flavor for the vIPR-ATM firewall virtual machine
105 vipr_atm_server_group:
108 - length: { min: 1, max: 255 }
109 description: A string with length of at least 1 and less than 255.
110 description: Server Group with anti-affinity policy for the vIPR-ATM firewall virtual machine
114 - length: { min: 1, max: 255 }
115 description: A string with length of at least 1 and less than 255.
116 description: The Valet 1.0 Exclusivity Group for the vIPR-ATM firewall virtual machine
120 - length: { min: 1, max: 255 }
121 description: A string with length of at least 1 and less than 255.
122 description: Availability Zone for the vIPR-ATM firewall virtual machine
127 - length: { min: 1, max: 255 }
128 description: A string with length of at least 1 and less than 255.
129 description: Unique ID for this VF instance
133 - length: { min: 1, max: 255 }
134 description: A string with length of at least 1 and less than 255.
135 description: Unique Name for this VF instance
139 - length: { min: 1, max: 255 }
140 description: A string with length of at least 1 and less than 255.
141 description: Unique ID for the VF Module instance
144 # Create the Port Tuple
146 type: OS::ContrailV2::PortTuple
150 template: VM_NAME_PORT_TUPLE
152 VM_NAME: { get_param: vipr_atm_name_0 }
153 service_instance: { get_param: vipr_atm_contrail_service_instance_fqdn }
155 # Left Port (Virtual Machine Interface)
157 type: OS::ContrailV2::VirtualMachineInterface
158 depends_on: [ vIPR_ATM_RPT ]
162 template: VM_NAME_PORT_3
164 VM_NAME: { get_param: vipr_atm_name_0 }
165 virtual_machine_interface_properties:
167 virtual_machine_interface_properties_service_interface_type: 'left'
169 port_tuple_refs: [{ get_resource: vIPR_ATM_RPT }]
170 virtual_network_refs: [{ get_param: vipr_atm_service_left_fqdn }]
172 # Right Port (Virtual Machine Interface)
174 type: OS::ContrailV2::VirtualMachineInterface
175 depends_on: [ vIPR_ATM_RPT ]
179 template: VM_NAME_PORT_4
181 VM_NAME: { get_param: vipr_atm_name_0 }
182 virtual_machine_interface_properties:
184 virtual_machine_interface_properties_service_interface_type: 'right'
186 port_tuple_refs: [{ get_resource: vIPR_ATM_RPT }]
187 virtual_network_refs: [{ get_param: vipr_atm_service_right_fqdn }]
191 type: OS::ContrailV2::InstanceIp
192 depends_on: [ vIPR_ATM_Left_RVMI ]
196 template: VM_NAME_INSTANCE_IP_LEFT
198 VM_NAME: { get_param: vipr_atm_name_0 }
199 virtual_machine_interface_refs: [{ get_resource: vIPR_ATM_Left_RVMI }]
200 virtual_network_refs: [{ get_param: vipr_atm_service_left_fqdn }]
204 type: OS::ContrailV2::InstanceIp
205 depends_on: [ vIPR_ATM_Right_RVMI ]
209 template: VM_NAME_INSTANCE_IP_RIGHT
211 VM_NAME: { get_param: vipr_atm_name_0 }
212 virtual_machine_interface_refs: [{ get_resource: vIPR_ATM_Right_RVMI }]
213 virtual_network_refs: [{ get_param: vipr_atm_service_right_fqdn }]
215 # OAM Network Port (not part of Port Tuple)
217 type: OS::Neutron::Port
221 template: VM_NAME_PORT_0
223 VM_NAME: { get_param: vipr_atm_name_0 }
224 network: { get_param: oam_net_id }
225 security_groups: { get_param: vipr_atm_oam_net_security_groups }
227 # HA One Port (not part of Port Tuple)
228 vIPR_ATM_Ha_One_0_Port:
229 type: OS::Neutron::Port
233 template: VM_NAME_PORT_1
235 VM_NAME: { get_param: vipr_atm_name_0 }
236 network: { get_param: vipr_atm_ha_one_id }
237 fixed_ips: [ { "ip_address": { get_param: vipr_atm_ha_one_ip_0 } } ]
238 security_groups: { get_param: vipr_atm_ha_one_security_groups }
240 # HA Two Port (not part of Port Tuple)
241 vIPR_ATM_Ha_Two_0_Port:
242 type: OS::Neutron::Port
246 template: VM_NAME_PORT_2
248 VM_NAME: { get_param: vipr_atm_name_0 }
249 network: { get_param: vipr_atm_ha_two_id }
250 fixed_ips: [ { "ip_address": { get_param: vipr_atm_ha_two_ip_0 } } ]
251 security_groups: { get_param: vipr_atm_ha_two_security_groups }
253 # Valet Exclusivity Group
255 type: ATT::Valet::GroupAssignment
257 group_name: { get_param: vipr_atm_valet_eg_0 }
258 group_type: exclusivity
261 - { get_resource: vIPR_ATM_Firewall }
263 # Create the VM and bind the five ports to it
264 # vIPR_ATM_Firewall_Cloud_Config:
265 # type: OS::Heat::CloudConfig
269 # chpasswd: { expire: False }
271 # manage_etc_hosts: true
274 type: OS::Nova::Server
278 - vIPR_ATM_OAM_0_Port
279 - vIPR_ATM_Ha_One_0_Port
280 - vIPR_ATM_Ha_Two_0_Port
282 name: { get_param: vipr_atm_name_0 }
283 image: { get_param: vipr_atm_image_name }
284 flavor: { get_param: vipr_atm_flavor_name }
285 availability_zone: { get_param: availability_zone_0 }
287 group: { get_param: vipr_atm_server_group }
289 - port: { get_resource: vIPR_ATM_OAM_0_Port }
290 - port: { get_resource: vIPR_ATM_Ha_One_0_Port }
291 - port: { get_resource: vIPR_ATM_Ha_Two_0_Port }
292 - port: { get_resource: vIPR_ATM_Left_RVMI }
293 - port: { get_resource: vIPR_ATM_Right_RVMI }
295 vnf_id: { get_param: vnf_id }
296 vnf_name: { get_param: vnf_name }
297 vf_module_id: { get_param: vf_module_id }
298 # user_data_format: RAW
299 # user_data: { get_resource: vIPR_ATM_Firewall_Cloud_Config }