1 heat_template_version: 2015-04-30
3 description: Base Module of Sample VNF
7 # ONAP Assigned Parameters
10 description: Unique ID for this VNF instance
14 description: Unique ID for this VNF instance
18 description: Unique ID for this VNF instance
22 description: Unique ID for this VNF module instance
26 description: Index of this VF Module
30 description: Unique name for this VNF instance
36 description: Primary Availability Zone
40 description: Secondary Availability Zone
46 description: Operations, Administration, and Management Network
50 description: Subnet for OAM Network
54 description: High Availability Network
58 description: Control Plane network
62 description: Subnet for High Availability Network
65 # Server Inputs: Database
68 description: Primary DB Server Name
72 description: Secondary DB
76 description: Database VM Image Name
80 description: Database VM Flavor Name
84 description: Database Floating IPv6 Address for HA
88 description: Database Floating IPv4 Address for HA
92 description: Fixed IPv4 Address for OAM
96 description: Fixed IPv4 Address for OAM
100 description: Volume ID for DB in AZ 0
104 description: Volume ID for DB in AZ 1
107 # Server Inputs: Loadbalancer
110 description: Load Balancer Name
114 description: Loadbalancer VM Image
118 description: Loadbalancer VM Flavor
122 description: Floating HA IP for LB
125 lb_ha_floating_v6_ip:
127 description: Floating HA IP for LB
130 # Server Inputs: Webservice Controller Plane Interface (mgmt)
133 description: List of Management VM Names
137 description: Management VM Image
141 description: Management VM Flavor
145 description: IP to web service for control plane
149 description: IP to web service for control plane
152 # Server Inputs: Services
154 type: comma_delimited_list
155 description: Service VM Names
159 description: Service VM Image
163 description: Service VM Flavor
167 description: Number of instances of Service to create
172 type: OS::Neutron::Net
175 type: OS::Neutron::Subnet
179 template: $VNF_NAME-private_subnet
181 $VNF_NAME: { get_param: vnf_name }
182 network: { get_resource: int_private_network }
185 type: OS::Nova::Server
187 image: { get_param: db_image_name }
188 flavor: { get_param: db_flavor_name }
189 name: { get_param: db_name_0 }
191 vnf_id: { get_param: vnf_id }
192 vf_module_id: { get_param: vf_module_id }
193 vf_module_index: { get_param: vf_module_index }
194 vnf_name: { get_param: vnf_name }
195 workload_context: { get_param: workload_context }
196 environment_context: { get_param: environment_context }
198 - port: { get_resource: db_0_int_private_port_0 }
199 - port: { get_resource: db_0_ha_port_0 }
200 - port: { get_resource: db_0_oam_port_0 }
201 user_data: { get_file: user.data }
202 availability_zone: { get_param: availability_zone_0 }
205 type: OS::Nova::Server
207 image: { get_param: db_image_name }
208 flavor: { get_param: db_flavor_name }
209 name: { get_param: db_name_1 }
211 vnf_id: { get_param: vnf_id}
212 vf_module_id: { get_param: vf_module_id }
213 vnf_name: { get_param: vnf_name }
214 workload_context: { get_param: workload_context }
215 environment_context: { get_param: environment_context }
217 - port: {get_resource: db_1_int_private_port_0}
218 - port: {get_resource: db_1_ha_port_0}
219 - port: { get_resource: db_1_oam_port_0 }
220 availability_zone: { get_param: availability_zone_1 }
223 type: OS::Neutron::Port
225 network: { get_param: oam_net_id }
227 - subnet_id: { get_param: oam_subnet_id }
228 ip_address: { get_param: db_oam_ip_0 }
231 type: OS::Neutron::Port
233 network: { get_param: ha_net_id }
234 allowed_address_pairs:
235 - ip_address: {get_param: db_ha_floating_ip }
236 - ip_address: {get_param: db_ha_floating_v6_ip }
238 db_0_int_private_port_0:
239 type: OS::Neutron::Port
241 network: { get_resource: int_private_network }
243 - subnet_id: { get_resource: int_private_subnet }
246 type: OS::Neutron::Port
248 network: { get_param: oam_net_id }
250 - subnet_id: { get_param: oam_subnet_id }
251 ip_address: { get_param: db_oam_ip_1 }
254 type: OS::Neutron::Port
256 network: { get_param: ha_net_id }
257 allowed_address_pairs:
258 - ip_address: {get_param: db_ha_floating_ip }
259 - ip_address: {get_param: db_ha_floating_v6_ip }
261 db_1_int_private_port_0:
262 type: OS::Neutron::Port
264 network: { get_resource: int_private_network }
266 - subnet_id: { get_resource: int_private_subnet }
269 db_volume_attachment_0:
270 type: OS::Cinder::VolumeAttachment
272 volume_id: { get_param: db_vol0_id }
273 instance_uuid: { get_resource: db_server_0 }
275 db_volume_attachment_1:
276 type: OS::Cinder::VolumeAttachment
278 volume_id: { get_param: db_vol1_id }
279 instance_uuid: { get_resource: db_server_1 }
282 type: OS::Nova::Server
284 image: { get_param: mgmt_image_name }
285 flavor: { get_param: mgmt_flavor_name }
286 name: { get_param: mgmt_name_0 }
288 vnf_id: { get_param: vnf_id }
289 vf_module_id: { get_param: vf_module_id }
290 vf_module_index: { get_param: vf_module_index }
291 vnf_name: { get_param: vnf_name }
292 workload_context: { get_param: workload_context }
293 environment_context: { get_param: environment_context }
295 - port: { get_resource: mgmt_0_int_private_port_0 }
296 - port: { get_resource: mgmt_0_ctrl_port_0 }
297 user_data: { get_file: user.data }
298 availability_zone: { get_param: availability_zone_0 }
300 mgmt_0_int_private_port_0:
301 type: OS::Neutron::Port
303 network: { get_resource: int_private_network }
305 - subnet_id: { get_resource: int_private_subnet }
308 type: OS::Neutron::Port
310 network: { get_param: ctrl_net_id }
312 - subnet: { get_param: ctrl_subnet_id }
313 - ip_address: { get_param: mgmt_ctrl_ip_0 }
314 - ip_address: { get_param: mgmt_ctrl_v6_ip_0}
317 type: OS::Nova::Server
319 image: { get_param: lb_image_name }
320 flavor: { get_param: lb_flavor_name }
321 name: { get_param: lb_name_0 }
323 vnf_id: { get_param: vnf_id }
324 vf_module_id: { get_param: vf_module_id }
325 vf_module_index: { get_param: vf_module_index }
326 vnf_name: { get_param: vnf_name }
327 workload_context: { get_param: workload_context }
328 environment_context: { get_param: environment_context }
330 - port: { get_resource: lb_0_int_private_port_0 }
331 - port: { get_resource: lb_0_ha_port_0 }
332 user_data: { get_file: user.data }
333 availability_zone: { get_param: availability_zone_0 }
336 type: OS::Neutron::Port
338 network: { get_param: ha_net_id }
339 allowed_address_pairs:
340 - ip_address: {get_param: lb_ha_floating_ip }
341 - ip_address: {get_param: lb_ha_floating_v6_ip }
343 lb_0_int_private_port_0:
344 type: OS::Neutron::Port
346 network: { get_resource: int_private_network }
348 - subnet_id: { get_resource: int_private_subnet }
350 svc_resource_group_0:
351 type: OS::Heat::ResourceGroup
353 count: { get_param: svc_count }
355 type: nested_svc.yaml
357 workload_context: {get_param: workload_context}
358 environment_context: {get_param: environment_context}
359 vnf_id: {get_param: vnf_id}
360 vf_module_id: {get_param: vf_module_id}
361 vnf_name: {get_param: vnf_name}
362 availability_zone_0: {get_param: availability_zone_0}
363 svc_names: {get_param: svc_names}
364 svc_image_name: {get_param: svc_image_name}
365 svc_flavor_name: {get_param: svc_flavor_name}
367 int_private_net_id: {get_resource: int_private_network}
368 int_private_subnet_id: {get_resource: int_private_subnet}
372 int_private_subnet_id:
373 value: { get_resource: int_private_subnet }
376 value: { get_resource: int_private_network }