1e5d74c9ac8f6a4d2f8adc7137c9354acf5e2fbf
[sdc.git] /
1 heat_template_version: '2014-10-16'
2 description: ''
3
4 ## Note: Nokia VM HOT file for vCCF
5 ## Copyright: Nokia 2016
6 ## Name: "base_vIECCF.yml"
7 ## Date: 20 Dec 2016
8 ## Juno Version
9 ## Version History
10 ##     12/20/2016 
11 ##         - Initial version for IECCF R30.3.3
12 ##     01/06/2017
13 ##         - Updated vCCF package to address removal of shared volume for IO VMs
14 ##     01/19/2017
15 ##         - Updated vCCF package to address ICE feedback reviewed on 1/13/2017
16 ##         - Updated to remove Nokia related values and match AT&T environment
17 ##         - Updated vm_role to match vm_type used in the resource naming convention
18 ##     02/17/2017
19 ##         - Updated vCCF package from Nokia
20 ##     06/23/2017
21 ##         - Updated vCCF package from Nokia to add output parameter for OAM IP address
22 ##     08/21/2017
23 ##         - Updated to replace ':' in port resource names with '_'
24 ##     09/20/2017
25 ##         - Updated to revert port resource names back to original with embedded ':'
26 ##         - Updated to replace ':' in port name property with '_'
27 ##     09/27/2017
28 ##         - Updated for mini instance in DPA2a - VM reduction
29
30 parameters:
31     vnf_id:
32         type: string
33         description: Unique ID for this VF instance
34     vf_module_id:
35         type: string
36         description: Unique ID for this VF Module instance
37     vnf_name:
38         type: string
39         description: Unique name for this VF instance
40     vf_module_name:
41         type: string
42         description: Unique name for this VF Module instance
43
44     plt_names:
45         type: comma_delimited_list
46         description: VM names for plt VMs
47     iox_names:
48         type: comma_delimited_list
49         description: VM names for iox VMs
50     app_names:
51         type: comma_delimited_list
52         description: VM names for app VMs
53
54     openstack_cacert: # Is this needed, and why?
55         type: string
56         label: 'OpenStack CA Certificate'
57         description: 'CA Certificate to use for OpenStack client calls.'
58     config_server_cacert:
59         type: string
60         label: 'configure server CA Certificate'
61         description: 'CA Certificate for download from siteinfo url and config url.'
62         
63 #    _template_version_:
64 #        type: string
65 #        hidden: 'True'
66     ignore_siteinfo_audit:
67         type: string
68         label: 'Siteinfo Audit Ignore Flag'
69         description: 'Set to true if siteinfo audit failure should not prevent system installation'
70
71     availability_zone_0:
72         type: string
73         description: First availability zone ID or Name
74     availability_zone_1:
75         type: string
76         description: Second availability zone ID or Name
77
78     plt_image_name:
79         type: string
80         description: Pilot image
81         
82     plt_flavor_name:
83         type: string
84         description: Pilot flavor
85         
86     plt_security_groups:
87         type: comma_delimited_list
88         description: Pilot security group
89         
90         
91     iox_image_name:
92         type: string
93         description: IO image
94         
95     iox_flavor_name:
96         type: string
97         description: IO flavor
98         
99     iox_security_groups:
100         type: comma_delimited_list
101         description: IO security group
102         
103     app_image_name:
104         type: string
105         description: App image
106         
107     app_flavor_name:
108         type: string
109         description: App flavor
110         
111     app_security_groups:
112         type: comma_delimited_list
113         description: App security group
114         
115     oam_security_groups:
116         type: comma_delimited_list
117         description: OAM security group
118         
119     data_security_groups:
120         type: comma_delimited_list
121         description: DATA security group
122
123     oam_net_id:
124         type: string
125         description: 'OAM network'
126         
127     data_net_id:
128         type: string
129         description: 'DATA network'
130 #    io_net_id:
131 #        type: string
132 #        label: 'IO network'
133
134     siteinfo_url:
135         type: string
136         description: 'siteinfo url'
137     ieccf_config_url:
138         type: string
139         description: 'IECCF configuration package URL'
140     ieccf_debug:
141         type: string
142         description: 'IECCF debug flag'
143 #    growth_mini_siteinfo_url_01:
144 #        type: string
145 #        label: 'IECCF app node growth mini siteinfo URL'
146
147     name_server_1:
148         type: string
149         description: 'IP address of name server 1'
150     name_server_2:
151         type: string
152         description: 'IP address of name server 2'
153     domain:
154         type: string
155         description: What is this domain? 
156
157     plt_oam_ips:
158         type: comma_delimited_list
159         description: Fixed IPv4 assignments for plt VMs on the OAM network
160     iox_oam_ips:
161         type: comma_delimited_list
162         description: Fixed IPv4 assignments for iox VMs on the OAM network
163     app_oam_ips:
164         type: comma_delimited_list
165         description: Fixed IPv4 assignments for app VMs on the OAM network
166
167     plt_data_v6_ips:
168         type: comma_delimited_list
169         description: Fixed IPv6 assignments for plt VMs on the DATA network
170     iox_data_v6_ips:
171         type: comma_delimited_list
172         description: Fixed IPv6 assignments for iox VMs on the DATA network
173     app_data_v6_ips:
174         type: comma_delimited_list
175         description: Fixed IPv6 assignments for app VMs on the DATA network
176
177     plt_oam_floating_ip:
178         type: string
179         description: Floating IPv4 for plt VMs on the OAM network
180     iox_oam_floating_ip:
181         type: string
182         description: Floating IPv4 for iox VMs on the OAM network
183
184     plt_data_floating_v6_ip:
185         type: string
186         description: Floating IPv6 for plt VMs on the DATA network
187     iox_data_floating_v6_ip:
188         type: string
189         description: Floating IPv6 for iox VMs on the DATA network
190
191     internal_subnet_cidr:
192         type: string
193         description: IP subnet for internal network
194
195     plt_pair_uuid:
196         type: string
197         description: UUID for plt VM pair
198     iox_pair_uuid:
199         type: string
200         description: UUID for iox VM pair
201
202     plt_volume_shared_id_0:
203         type: string
204         description: ServiceData2 volume for plt VMs
205
206     plt_volume_id_0:
207         type: string
208         description: ServiceData1 volume for first plt VM
209
210     plt_volume_id_1:
211         type: string
212         description: ServiceData1 volume for second plt VM
213
214     app_volume_id_0:
215         type: string
216         description: ServiceData1 volume for first app VM
217
218     app_volume_id_1:
219         type: string
220         description: ServiceData1 volume for second app VM
221
222     app_volume_id_2:
223         type: string
224         description: ServiceData1 volume for third app VM
225                      
226 resources:
227
228     internal_net_0:
229         type: OS::Neutron::Net
230         properties:
231             name:
232                 str_replace:
233                     template: $prefix-internal_net_0
234                     params:
235                         $prefix: { get_param: vnf_name }
236             
237     internal_0_subnet_0:
238         type: OS::Neutron::Subnet
239         properties:
240             name:
241                 str_replace:
242                     template: $vnf_name-internal_0_subnet_0
243                     params:
244                         $vnf_name:
245                             get_param: vnf_name
246             cidr: {get_param: internal_subnet_cidr}
247             network: {get_resource: internal_net_0 }
248             enable_dhcp: 'True'
249             gateway_ip: ''
250
251     app_server_group:
252         type: OS::Nova::ServerGroup
253         properties:
254             name:
255                 str_replace:
256                   params:
257                       $vnf_name: {get_param: vnf_name}
258                   template: $vnf_name-app_server_group
259             policies:
260                 - anti-affinity
261
262     'node:m001:server':
263         type: OS::Nova::Server
264         properties:
265             name: { get_param: [plt_names, 0]}
266             availability_zone:
267                 get_param: availability_zone_0
268             image:
269                 get_param: plt_image_name
270             flavor:
271                 get_param: plt_flavor_name
272             image_update_policy: REBUILD
273             config_drive: 'True'
274             block_device_mapping:
275                 -
276                     delete_on_termination: 'false'
277                     device_name: vdb
278                     volume_id:
279                         get_param: plt_volume_id_0
280             networks:
281                 -
282                     port:
283                         get_resource: plt_internal_0_port_0
284                 -
285                     port:
286                         get_resource: plt_oam_0_port_0
287                 -
288                     port:
289                         get_resource: plt_data_0_port_0
290             user_data_format: RAW
291             user_data:
292                 str_replace:
293                     template:
294                         get_file: node_userdata_script.sh
295 #                        get_param: _node_userdata_script_
296                     params:
297                         __heat_stack_name__:
298                             get_param: 'OS::stack_name'
299                         __node_siteinfo_url__: { get_param: siteinfo_url }
300                         __ieccf_config_url__: { get_param: ieccf_config_url }
301                         __ieccf_debug__: { get_param: ieccf_debug }
302                         __activepilot_ip__:
303                             get_attr:
304                                 - 'network:system:vip:m001:m002'
305 #                                - 'network_system_vip_m001_m002'
306                                 - fixed_ips
307                                 - 0
308                                 - ip_address
309                         __host_key__:
310                             get_attr:
311                                 - 'sysinfo:host_key'
312                                 - value
313                         __pilot__: A
314                         __script_url__: ''
315                         __script_args__: ''
316                         __os_cacert__:
317                             get_param: openstack_cacert
318 #                            get_file: openstack_cacert.crt
319                         __cs_cacert__:
320                             get_param: config_server_cacert
321 #                            get_file: config_server_cacert.crt
322                         __post_exec__: ''
323                         __ignore_siteinfo_audit__:
324                             get_param: ignore_siteinfo_audit
325                         __nameserver1__: {get_param: name_server_1}
326                         __nameserver2__: {get_param: name_server_2}
327                         __domain__: { get_param: domain }
328                         __shared_volid1__:
329 #                            get_resource: 'node:m001:m002:shared_vol1'
330                             get_param: plt_volume_shared_id_0
331
332             metadata:
333                 vnf_id: {get_param: vnf_id}
334                 vnf_name: {get_param: vnf_name}
335                 vf_module_id: {get_param: vf_module_id}
336                 vf_module_name: {get_param: vf_module_name}
337                 vm_role: plt
338         metadata:
339             mcas_id: m001
340             networks:
341                 -
342                     get_attr:
343                         - plt_internal_0_port_0
344                         - network_id
345                 -
346                     get_attr:
347                         - plt_oam_0_port_0
348                         - network_id
349                 -
350                     get_attr:
351                         - plt_data_0_port_0
352                         - network_id
353             mcas_mate_id: m002
354             pair_uuid: {get_param: plt_pair_uuid}
355             shared_vol1: {get_param: plt_volume_shared_id_0}
356     plt_internal_0_port_0:
357         type: OS::Neutron::Port
358         properties:
359             name:
360                 str_replace:
361                     template: $vnf_name-plt_internal_0_port_0
362                     params:
363                         $vnf_name:
364                             get_param: vnf_name
365             network: {get_resource: internal_net_0 }
366             replacement_policy: AUTO
367             allowed_address_pairs:
368                 -
369                     ip_address: {get_param: internal_subnet_cidr}
370             security_groups:
371                 get_param: plt_security_groups
372         metadata:
373             os_net: {get_resource: internal_net_0 }
374
375     plt_internal_0_port_1:
376         type: OS::Neutron::Port
377         properties:
378             name:
379                 str_replace:
380                     template: $vnf_name-plt_internal_0_port_0
381                     params:
382                         $vnf_name:
383                             get_param: vnf_name
384             network: {get_resource: internal_net_0 }
385             replacement_policy: AUTO
386             allowed_address_pairs:
387                 -
388                     ip_address: {get_param: internal_subnet_cidr}
389             security_groups:
390                 get_param: plt_security_groups
391         metadata:
392             os_net: {get_resource: internal_net_0 }
393             
394     plt_oam_0_port_0:
395         type: OS::Neutron::Port
396         properties:
397             name:
398                 str_replace:
399                     template: $vnf_name-plt_oam_0_port_0
400                     params:
401                         $vnf_name:
402                             get_param: vnf_name
403             network: { get_param: oam_net_id }
404             replacement_policy: AUTO
405             allowed_address_pairs:
406                 -
407                     ip_address:
408                         get_attr:
409                             - 'network:oam:vip:m001:m002'
410 #                            - 'network_oam_vip_m001_m002'
411                             - fixed_ips
412                             - 0
413                             - ip_address
414             fixed_ips:
415                 -
416                     ip_address: {get_param: [plt_oam_ips, 0]}
417             security_groups:
418 #                get_param: plt_security_groups
419                 get_param: oam_security_groups
420         metadata:
421             os_net: { get_param: oam_net_id }
422             ext_net: oam
423
424     plt_oam_0_port_1:
425         type: OS::Neutron::Port
426         properties:
427             name:
428                 str_replace:
429                     template: $vnf_name-plt_oam_0_port_0
430                     params:
431                         $vnf_name:
432                             get_param: vnf_name
433             network: { get_param: oam_net_id }
434             replacement_policy: AUTO
435             allowed_address_pairs:
436                 -
437                     ip_address:
438                         get_attr:
439                             - 'network:oam:vip:m001:m002'
440 #                            - 'network_oam_vip_m001_m002'
441                             - fixed_ips
442                             - 0
443                             - ip_address
444             fixed_ips:
445                 -
446                     ip_address: {get_param: [plt_oam_ips, 0]}
447             security_groups:
448 #                get_param: plt_security_groups
449                 get_param: oam_security_groups
450         metadata:
451             os_net: { get_param: oam_net_id }
452             ext_net: oam
453
454     plt_data_0_port_0:
455         type: OS::Neutron::Port
456         properties:
457             name:
458                 str_replace:
459                     template: $vnf_name-plt_data_0_port_0
460                     params:
461                         $vnf_name:
462                             get_param: vnf_name
463             network: { get_param: data_net_id }
464             replacement_policy: AUTO
465             allowed_address_pairs:
466                 -
467                     ip_address:
468                         get_attr:
469                             - 'network:data:vip:m001:m002'
470 #                            - 'network_data_vip_m001_m002'
471                             - fixed_ips
472                             - 0
473                             - ip_address
474             fixed_ips:
475                 -
476                     ip_address: {get_param: [plt_data_v6_ips, 0]}
477             security_groups:
478 #                get_param: plt_security_groups
479                 get_param: data_security_groups
480         metadata:
481             os_net: { get_param: data_net_id }
482             ext_net: data
483
484     plt_data_0_port_1:
485         type: OS::Neutron::Port
486         properties:
487             name:
488                 str_replace:
489                     template: $vnf_name-plt_data_0_port_0
490                     params:
491                         $vnf_name:
492                             get_param: vnf_name
493             network: { get_param: data_net_id }
494             replacement_policy: AUTO
495             allowed_address_pairs:
496                 -
497                     ip_address:
498                         get_attr:
499                             - 'network:data:vip:m001:m002'
500 #                            - 'network_data_vip_m001_m002'
501                             - fixed_ips
502                             - 0
503                             - ip_address
504             fixed_ips:
505                 -
506                     ip_address: {get_param: [plt_data_v6_ips, 1]}
507             security_groups:
508 #                get_param: plt_security_groups
509                 get_param: data_security_groups
510         metadata:
511             os_net: { get_param: data_net_id }
512             ext_net: data
513
514     'node:m002:server':
515         type: OS::Nova::Server
516         properties:
517             name: { get_param: [plt_names, 1]}
518             availability_zone:
519                 get_param: availability_zone_1
520             image:
521                 get_param: plt_image_name
522             flavor:
523                 get_param: plt_flavor_name
524             image_update_policy: REBUILD
525             config_drive: 'True'
526             block_device_mapping:
527                 -
528                     delete_on_termination: 'false'
529                     device_name: vdb
530                     volume_id:
531                         get_param: plt_volume_id_1
532             networks:
533                 -
534                     port:
535                         get_resource: plt_internal_0_port_1
536                 -
537                     port:
538                         get_resource: plt_oam_0_port_1
539                 -
540                     port:
541                         get_resource: plt_data_0_port_1
542             user_data_format: RAW
543             user_data:
544                 str_replace:
545                     template:
546                         get_file: node_userdata_script.sh
547 #                        get_param: _node_userdata_script_
548                     params:
549                         __heat_stack_name__:
550                             get_param: 'OS::stack_name'
551                         __node_siteinfo_url__: { get_param: siteinfo_url }
552                         __ieccf_config_url__: { get_param: ieccf_config_url }
553                         __ieccf_debug__: { get_param: ieccf_debug }
554                         __activepilot_ip__:
555                             get_attr:
556                                 - 'network:system:vip:m001:m002'
557 #                                - 'network_system_vip_m001_m002'
558                                 - fixed_ips
559                                 - 0
560                                 - ip_address
561                         __host_key__:
562                             get_attr:
563                                 - 'sysinfo:host_key'
564                                 - value
565                         __pilot__: B
566                         __script_url__: ''
567                         __script_args__: ''
568                         __os_cacert__:
569                             get_param: openstack_cacert
570 #                            get_file: openstack_cacert.crt
571                         __cs_cacert__:
572                             get_param: config_server_cacert
573 #                            get_file: config_server_cacert.crt
574                         __post_exec__: ''
575                         __ignore_siteinfo_audit__:
576                             get_param: ignore_siteinfo_audit
577                         __nameserver1__: {get_param: name_server_1}
578                         __nameserver2__: {get_param: name_server_2}
579                         __domain__: {get_param: domain}
580                         __shared_volid1__:
581 #                            get_resource: 'node:m001:m002:shared_vol1'
582                             get_param: plt_volume_shared_id_0
583
584             metadata:
585                 vnf_id: {get_param: vnf_id}
586                 vnf_name: {get_param: vnf_name}
587                 vf_module_id: {get_param: vf_module_id}
588                 vf_module_name: {get_param: vf_module_name}
589                 vm_role: plt
590         metadata:
591             mcas_id: m002
592             networks:
593                 -
594                     get_attr:
595                         - plt_internal_1_port_0
596                         - network_id
597                 -
598                     get_attr:
599                         - plt_oam_1_port_0
600                         - network_id
601                 -
602                     get_attr:
603                         - plt_data_1_port_0
604                         - network_id
605             mcas_mate_id: m001
606             pair_uuid: {get_param: plt_pair_uuid}
607             shared_vol1: {get_param: plt_volume_shared_id_0}
608
609     'network:system:vip:m001:m002':
610 #    'network_system_vip_m001_m002':
611         type: OS::Neutron::Port
612         properties:
613             name:
614                 str_replace:
615 #                    template: '$vnf_name-network:system:vip:m001:m002'
616                     template: '$vnf_name-network_system_vip_m001_m002'
617                     params:
618                         $vnf_name:
619                             get_param: vnf_name
620             network: {get_resource: internal_net_0 }
621
622             replacement_policy: AUTO
623             allowed_address_pairs:
624                 -
625                     ip_address: {get_param: internal_subnet_cidr }
626             security_groups:
627                 get_param: plt_security_groups
628         metadata:
629             os_net: {get_resource: internal_net_0 }
630
631             pair_uuid: {get_param: plt_pair_uuid}
632     'network:oam:vip:m001:m002':
633 #    'network_oam_vip_m001_m002':
634         type: OS::Neutron::Port
635         properties:
636             name:
637                 str_replace:
638 #                    template: '$vnf_name-network:oam:vip:m001:m002'
639                     template: '$vnf_name-network_oam_vip_m001_m002'
640                     params:
641                         $vnf_name:
642                             get_param: vnf_name
643             network: { get_param: oam_net_id }
644             replacement_policy: AUTO
645             fixed_ips:
646                 -
647                     ip_address: {get_param: plt_oam_floating_ip}
648             security_groups:
649 #                get_param: plt_security_groups
650                 get_param: oam_security_groups
651         metadata:
652             os_net: { get_param: oam_net_id }
653             ext_net: oam
654             pair_uuid: {get_param: plt_pair_uuid}
655     'network:data:vip:m001:m002':
656 #    'network_data_vip_m001_m002':
657         type: OS::Neutron::Port
658         properties:
659             name:
660                 str_replace:
661 #                    template: '$vnf_name-network:data:vip:m001:m002'
662                     template: '$vnf_name-network_data_vip_m001_m002'
663                     params:
664                         $vnf_name:
665                             get_param: vnf_name
666             network: { get_param: data_net_id }
667             replacement_policy: AUTO
668             fixed_ips:
669                 -
670                     ip_address: {get_param: plt_data_floating_v6_ip}
671             security_groups:
672 #                get_param: plt_security_groups
673                 get_param: data_security_groups
674         metadata:
675             os_net: { get_param: data_net_id }
676             ext_net: data
677             pair_uuid: {get_param: plt_pair_uuid}
678
679     'node:m003:server':
680         type: OS::Nova::Server
681         properties:
682             name: { get_param: [iox_names, 0]}
683             availability_zone:
684                 get_param: availability_zone_0
685             image:
686                 get_param: iox_image_name
687             flavor:
688                 get_param: iox_flavor_name
689             image_update_policy: REBUILD
690             config_drive: 'True'
691             networks:
692                 -
693                     port:
694                         get_resource: iox_internal_0_port_0
695                 -
696                     port:
697                         get_resource: iox_oam_0_port_0
698                 -
699                     port:
700                         get_resource: iox_data_0_port_0
701             user_data_format: RAW
702             user_data:
703                 str_replace:
704                     template:
705                         get_file: node_userdata_script.sh
706 #                        get_param: _node_userdata_script_
707                     params:
708                         __heat_stack_name__:
709                             get_param: 'OS::stack_name'
710                         __node_siteinfo_url__: { get_param: siteinfo_url }
711                         __ieccf_config_url__: { get_param: ieccf_config_url }
712                         __ieccf_debug__: { get_param: ieccf_debug }
713                         __activepilot_ip__:
714                             get_attr:
715                                 - 'network:system:vip:m001:m002'
716 #                                - 'network_system_vip_m001_m002'
717                                 - fixed_ips
718                                 - 0
719                                 - ip_address
720                         __host_key__:
721                             get_attr:
722                                 - 'sysinfo:host_key'
723                                 - value
724                         __pilot__: ''
725                         __script_url__: ''
726                         __script_args__: ''
727                         __os_cacert__: ''
728                         __cs_cacert__: ''
729                         __post_exec__: ''
730                         __ignore_siteinfo_audit__:
731                             get_param: ignore_siteinfo_audit
732                         __nameserver1__: {get_param: name_server_1}
733                         __nameserver2__: {get_param: name_server_2}
734                         __domain__: {get_param: domain}
735 #                        __shared_volid1__:
736 #                            get_resource: 'node:m003:m004:shared_vol1'
737 #                            get_param: iox_volume_shared_0
738
739             metadata:
740                 vnf_id: {get_param: vnf_id}
741                 vnf_name: {get_param: vnf_name}
742                 vf_module_id: {get_param: vf_module_id}
743                 vf_module_name: {get_param: vf_module_name}
744                 vm_role: iox
745         metadata:
746             mcas_id: m003
747             networks:
748                 -
749                     get_attr:
750                         - iox_internal_0_port_0
751                         - network_id
752                 -
753                     get_attr:
754                         - iox_oam_0_port_0
755                         - network_id
756                 -
757                     get_attr:
758                         - iox_data_0_port_0
759                         - network_id
760             mcas_mate_id: m004
761             pair_uuid: {get_param: iox_pair_uuid}
762 #            shared_vol1: {get_param: iox_volume_shared_0}
763     iox_internal_0_port_0:
764         type: OS::Neutron::Port
765         properties:
766             name:
767                 str_replace:
768                     template: $vnf_name-iox_internal_0_port_0
769                     params:
770                         $vnf_name:
771                             get_param: vnf_name
772             network: {get_resource: internal_net_0 }
773             replacement_policy: AUTO
774             allowed_address_pairs:
775                 -
776                     ip_address: {get_param: internal_subnet_cidr}
777             security_groups:
778                 get_param: iox_security_groups
779         metadata:
780             os_net: {get_resource: internal_net_0 }
781
782     iox_oam_0_port_0:
783         type: OS::Neutron::Port
784         properties:
785             name:
786                 str_replace:
787                     template: $vnf_name-iox_oam_0_port_0
788                     params:
789                         $vnf_name:
790                             get_param: vnf_name
791             network: { get_param: oam_net_id }
792             replacement_policy: AUTO
793             allowed_address_pairs:
794                 -
795                     ip_address:
796                         get_attr:
797                             - 'network:io:vip:m004:m003'
798 #                            - 'network_io_vip_m004_m003'
799                             - fixed_ips
800                             - 0
801                             - ip_address
802             fixed_ips:
803                 -
804                     ip_address: {get_param: [iox_oam_ips, 0]}
805             security_groups:
806 #                get_param: iox_security_groups
807                 get_param: oam_security_groups
808         metadata:
809             os_net: { get_param: oam_net_id }
810             ext_net: io
811     iox_data_0_port_0:
812         type: OS::Neutron::Port
813         properties:
814             name:
815                 str_replace:
816                     template: $vnf_name-iox_data_0_port_0
817                     params:
818                         $vnf_name:
819                             get_param: vnf_name
820             network: { get_param: data_net_id }
821             replacement_policy: AUTO
822             allowed_address_pairs:
823                 -
824                     ip_address:
825                         get_attr:
826                             - 'network:data:vip:m004:m003'
827 #                            - 'network_data_vip_m001_m002'
828                             - fixed_ips
829                             - 0
830                             - ip_address
831             fixed_ips:
832                 -
833                     ip_address: {get_param: [iox_data_v6_ips, 0]}
834             security_groups:
835 #                get_param: iox_security_groups
836                 get_param: data_security_groups
837         metadata:
838             os_net: { get_param: data_net_id }
839             ext_net: data
840     'node:m004:server':
841         type: OS::Nova::Server
842         properties:
843             name: { get_param: [iox_names, 1]}
844             availability_zone:
845                 get_param: availability_zone_1
846             image:
847                 get_param: iox_image_name
848             flavor:
849                 get_param: iox_flavor_name
850             image_update_policy: REBUILD
851             config_drive: 'True'
852             networks:
853                 -
854                     port:
855                         get_resource: iox_internal_0_port_1
856                 -
857                     port:
858                         get_resource: iox_oam_0_port_1
859                 -
860                     port:
861                         get_resource: iox_data_0_port_1
862             user_data_format: RAW
863             user_data:
864                 str_replace:
865                     template:
866                         get_file: node_userdata_script.sh
867 #                        get_param: _node_userdata_script_
868                     params:
869                         __heat_stack_name__:
870                             get_param: 'OS::stack_name'
871                         __node_siteinfo_url__: { get_param: siteinfo_url }
872                         __ieccf_config_url__: { get_param: ieccf_config_url }
873                         __ieccf_debug__: { get_param: ieccf_debug }
874                         __activepilot_ip__:
875                             get_attr:
876                                 - 'network:system:vip:m001:m002'
877 #                                - 'network_system_vip_m001_m002'
878                                 - fixed_ips
879                                 - 0
880                                 - ip_address
881                         __host_key__:
882                             get_attr:
883                                 - 'sysinfo:host_key'
884                                 - value
885                         __pilot__: ''
886                         __script_url__: ''
887                         __script_args__: ''
888                         __os_cacert__: ''
889                         __cs_cacert__: ''
890                         __post_exec__: ''
891                         __ignore_siteinfo_audit__:
892                             get_param: ignore_siteinfo_audit
893                         __nameserver1__: {get_param: name_server_1}
894                         __nameserver2__: {get_param: name_server_2}
895                         __domain__: {get_param: domain}
896 #                        __shared_volid1__:
897 #                            get_resource: 'node:m003:m004:shared_vol1'
898 #                            get_param: iox_volume_shared_0
899
900             metadata:
901                 vnf_id: {get_param: vnf_id}
902                 vnf_name: {get_param: vnf_name}
903                 vf_module_id: {get_param: vf_module_id}
904                 vf_module_name: {get_param: vf_module_name}
905                 vm_role: iox
906         metadata:
907             mcas_id: m004
908             networks:
909                 -
910                     get_attr:
911                         - iox_internal_1_port_0
912                         - network_id
913                 -
914                     get_attr:
915                         - iox_oam_1_port_0
916                         - network_id
917                 -
918                     get_attr:
919                         - iox_data_1_port_0
920                         - network_id
921             mcas_mate_id: m003
922             pair_uuid: {get_param: iox_pair_uuid}
923 #            shared_vol1: {get_param: iox_volume_shared_0}
924     iox_internal_0_port_1:
925         type: OS::Neutron::Port
926         properties:
927             name:
928                 str_replace:
929                     template: $vnf_name-iox_internal_1_port_0
930                     params:
931                         $vnf_name:
932                             get_param: vnf_name
933             network: {get_resource: internal_net_0 }
934
935             replacement_policy: AUTO
936             allowed_address_pairs:
937                 -
938                     ip_address: {get_param: internal_subnet_cidr}
939             security_groups:
940                 get_param: iox_security_groups
941         metadata:
942             os_net: {get_resource: internal_net_0 }
943  
944     iox_oam_0_port_1:
945         type: OS::Neutron::Port
946         properties:
947             name:
948                 str_replace:
949                     template: $vnf_name-iox_oam_1_port_0
950                     params:
951                         $vnf_name:
952                             get_param: vnf_name
953             network: { get_param: oam_net_id }
954             replacement_policy: AUTO
955             allowed_address_pairs:
956                 -
957                     ip_address:
958                         get_attr:
959                             - 'network:io:vip:m004:m003'
960 #                            - 'network_io_vip_m004_m003'
961                             - fixed_ips
962                             - 0
963                             - ip_address
964             fixed_ips:
965                 -
966                     ip_address: {get_param: [iox_oam_ips, 1]}
967             security_groups:
968 #                get_param: iox_security_groups
969                 get_param: oam_security_groups
970         metadata:
971             os_net: { get_param: oam_net_id }
972             ext_net: io
973     iox_data_0_port_1:
974         type: OS::Neutron::Port
975         properties:
976             name:
977                 str_replace:
978                     template: $vnf_name-iox_data_1_port_0
979                     params:
980                         $vnf_name:
981                             get_param: vnf_name
982             network: { get_param: data_net_id }
983             replacement_policy: AUTO
984             allowed_address_pairs:
985                 -
986                     ip_address:
987                         get_attr:
988                             - 'network:data:vip:m004:m003'
989 #                            - 'network_data_vip_m001_m002'
990                             - fixed_ips
991                             - 0
992                             - ip_address
993             fixed_ips:
994                 -
995                     ip_address: {get_param: [iox_data_v6_ips, 1]}
996             security_groups:
997 #                get_param: iox_security_groups
998                 get_param: data_security_groups
999         metadata:
1000             os_net: { get_param: data_net_id }
1001             ext_net: data
1002     'network:io:vip:m004:m003':
1003 #    'network_io_vip_m004_m003':
1004         type: OS::Neutron::Port
1005         properties:
1006             name:
1007                 str_replace:
1008 #                    template: '$vnf_name-network:io:vip:m004:m003'
1009                     template: '$vnf_name-network_io_vip_m004_m003'
1010                     params:
1011                         $vnf_name:
1012                             get_param: vnf_name
1013             network: { get_param: oam_net_id }
1014             replacement_policy: AUTO
1015             fixed_ips:
1016                 -
1017                     ip_address: {get_param: iox_oam_floating_ip}
1018             security_groups:
1019 #                get_param: iox_security_groups
1020                 get_param: oam_security_groups
1021         metadata:
1022             os_net: { get_param: oam_net_id }
1023             ext_net: io
1024             pair_uuid: {get_param: iox_pair_uuid}
1025     'network:data:vip:m004:m003':
1026 #    'network_data_vip_m004_m003':
1027         type: OS::Neutron::Port
1028         properties:
1029             name:
1030                 str_replace:
1031 #                    template: '$vnf_name-network:data:vip:m004:m003'
1032                     template: '$vnf_name-network_data_vip_m004_m003'
1033                     params:
1034                         $vnf_name:
1035                             get_param: vnf_name
1036             network: { get_param: data_net_id }
1037             replacement_policy: AUTO
1038             fixed_ips:
1039                 -
1040                     ip_address: {get_param: iox_data_floating_v6_ip}
1041             security_groups:
1042 #                get_param: iox_security_groups
1043                 get_param: data_security_groups
1044         metadata:
1045             os_net: { get_param: data_net_id }
1046             ext_net: data
1047             pair_uuid: {get_param: iox_pair_uuid}
1048
1049     'node:m005:server':
1050         type: OS::Nova::Server
1051         properties:
1052             name: { get_param: [app_names, 0]}
1053             availability_zone:
1054                 get_param: availability_zone_0
1055             image:
1056                 get_param: app_image_name
1057             flavor:
1058                 get_param: app_flavor_name
1059             image_update_policy: REBUILD
1060             config_drive: 'True'
1061             block_device_mapping:
1062                 -
1063                     delete_on_termination: 'false'
1064                     device_name: vdb
1065                     volume_id:
1066                         get_param: app_volume_id_0
1067             networks:
1068                 -
1069                     port:
1070                         get_resource: app_internal_0_port_0
1071                 -
1072                     port:
1073                         get_resource: app_oam_0_port_0
1074                 -
1075                     port:
1076                         get_resource: app_data_0_port_0
1077             user_data_format: RAW
1078             user_data:
1079                 str_replace:
1080                     template:
1081                         get_file: node_userdata_script.sh
1082 #                        get_param: _node_userdata_script_
1083                     params:
1084                         __heat_stack_name__:
1085                             get_param: 'OS::stack_name'
1086                         __node_siteinfo_url__: { get_param: siteinfo_url }
1087                         __ieccf_config_url__: { get_param: ieccf_config_url }
1088                         __ieccf_debug__: { get_param: ieccf_debug }
1089                         __activepilot_ip__:
1090                             get_attr:
1091                                 - 'network:system:vip:m001:m002'
1092 #                                - 'network_system_vip_m001_m002'
1093                                 - fixed_ips
1094                                 - 0
1095                                 - ip_address
1096                         __host_key__:
1097                             get_attr:
1098                                 - 'sysinfo:host_key'
1099                                 - value
1100                         __pilot__: ''
1101                         __script_url__: ''
1102                         __script_args__: ''
1103                         __os_cacert__: ''
1104                         __cs_cacert__: ''
1105                         __post_exec__: ''
1106                         __ignore_siteinfo_audit__:
1107                             get_param: ignore_siteinfo_audit
1108                         __nameserver1__: {get_param: name_server_1}
1109                         __nameserver2__: {get_param: name_server_2}
1110                         __domain__: {get_param: domain}
1111             scheduler_hints: 
1112                 group: {get_resource: app_server_group}
1113
1114             metadata:
1115                 vnf_id: {get_param: vnf_id}
1116                 vnf_name: {get_param: vnf_name}
1117                 vf_module_id: {get_param: vf_module_id}
1118                 vf_module_name: {get_param: vf_module_name}
1119                 vm_role: app
1120         metadata:
1121             mcas_id: m005
1122             networks:
1123                 -
1124                     get_attr:
1125                         - app_internal_0_port_0
1126                         - network_id
1127                 -
1128                     get_attr:
1129                         - app_oam_0_port_0
1130                         - network_id
1131                 -
1132                     get_attr:
1133                         - app_data_0_port_0
1134                         - network_id
1135     app_internal_0_port_0:
1136         type: OS::Neutron::Port
1137         properties:
1138             name:
1139                 str_replace:
1140                     template: $vnf_name-app_internal_0_port_0
1141                     params:
1142                         $vnf_name:
1143                             get_param: vnf_name
1144             network: {get_resource: internal_net_0 }
1145             replacement_policy: AUTO
1146             allowed_address_pairs:
1147                 -
1148                     ip_address: {get_param: internal_subnet_cidr}
1149             security_groups:
1150                 get_param: app_security_groups
1151         metadata:
1152             os_net: {get_resource: internal_net_0 }
1153
1154     app_oam_0_port_0:
1155         type: OS::Neutron::Port
1156         properties:
1157             name:
1158                 str_replace:
1159                     template: $vnf_name-app_oam_0_port_0
1160                     params:
1161                         $vnf_name:
1162                             get_param: vnf_name
1163             network: { get_param: oam_net_id }
1164             replacement_policy: AUTO
1165             fixed_ips:
1166                 -
1167                     ip_address: {get_param: [app_oam_ips, 0]}
1168                     
1169             security_groups:
1170 #                get_param: app_security_groups
1171                 get_param: oam_security_groups
1172         metadata:
1173             os_net: { get_param: oam_net_id }
1174             ext_net: oam    
1175     
1176     app_data_0_port_0:
1177         type: OS::Neutron::Port
1178         properties:
1179             name:
1180                 str_replace:
1181                     template: $vnf_name-app_data_0_port_0
1182                     params:
1183                         $vnf_name:
1184                             get_param: vnf_name
1185             network: { get_param: data_net_id }
1186             replacement_policy: AUTO
1187             fixed_ips:
1188                 -
1189                     ip_address: {get_param: [app_data_v6_ips, 0]}
1190             security_groups:
1191 #                get_param: app_security_groups
1192                 get_param: data_security_groups
1193         metadata:
1194             os_net: { get_param: data_net_id }
1195             ext_net: data
1196
1197     'node:m006:server':
1198         type: OS::Nova::Server
1199         properties:
1200             name: { get_param: [app_names, 1]}
1201             availability_zone:
1202                 get_param: availability_zone_1
1203             image:
1204                 get_param: app_image_name
1205             flavor:
1206                 get_param: app_flavor_name
1207             image_update_policy: REBUILD
1208             config_drive: 'True'
1209             block_device_mapping:
1210                 -
1211                     delete_on_termination: 'false'
1212                     device_name: vdb
1213                     volume_id:
1214                         get_param: app_volume_id_1
1215             networks:
1216                 -
1217                     port:
1218                         get_resource: app_internal_0_port_1
1219                 -
1220                     port:
1221                         get_resource: app_oam_0_port_1
1222                 -
1223                     port:
1224                         get_resource: app_data_0_port_1
1225             user_data_format: RAW
1226             user_data:
1227                 str_replace:
1228                     template:
1229                         get_file: node_userdata_script.sh
1230 #                        get_param: _node_userdata_script_
1231                     params:
1232                         __heat_stack_name__:
1233                             get_param: 'OS::stack_name'
1234                         __node_siteinfo_url__: { get_param: siteinfo_url }
1235                         __ieccf_config_url__: { get_param: ieccf_config_url }
1236                         __ieccf_debug__: { get_param: ieccf_debug }
1237                         __activepilot_ip__:
1238                             get_attr:
1239                                 - 'network:system:vip:m001:m002'
1240 #                                - 'network_system_vip_m001_m002'
1241                                 - fixed_ips
1242                                 - 0
1243                                 - ip_address
1244                         __host_key__:
1245                             get_attr:
1246                                 - 'sysinfo:host_key'
1247                                 - value
1248                         __pilot__: ''
1249                         __script_url__: ''
1250                         __script_args__: ''
1251                         __os_cacert__: ''
1252                         __cs_cacert__: ''
1253                         __post_exec__: ''
1254                         __ignore_siteinfo_audit__:
1255                             get_param: ignore_siteinfo_audit
1256                         __nameserver1__: {get_param: name_server_1}
1257                         __nameserver2__: {get_param: name_server_2}
1258                         __domain__: {get_param: domain}
1259             scheduler_hints: 
1260                 group: {get_resource: app_server_group}
1261
1262
1263             metadata:
1264                 vnf_id: {get_param: vnf_id}
1265                 vnf_name: {get_param: vnf_name}
1266                 vf_module_id: {get_param: vf_module_id}
1267                 vf_module_name: {get_param: vf_module_name}
1268                 vm_role: app
1269         metadata:
1270             mcas_id: m006
1271             networks:
1272                 -
1273                     get_attr:
1274                         - app_internal_1_port_0
1275                         - network_id
1276                 -
1277                     get_attr:
1278                         - app_oam_1_port_0
1279                         - network_id
1280                 -
1281                     get_attr:
1282                         - app_data_1_port_0
1283                         - network_id
1284     app_internal_0_port_1:
1285         type: OS::Neutron::Port
1286         properties:
1287             name:
1288                 str_replace:
1289                     template: $vnf_name-app_internal_1_port_0
1290                     params:
1291                         $vnf_name:
1292                             get_param: vnf_name
1293             network: {get_resource: internal_net_0 }
1294             replacement_policy: AUTO
1295             allowed_address_pairs:
1296                 -
1297                     ip_address: {get_param: internal_subnet_cidr}
1298             security_groups:
1299                 get_param: app_security_groups
1300         metadata:
1301             os_net: {get_resource: internal_net_0 }
1302
1303     app_oam_0_port_1:
1304         type: OS::Neutron::Port
1305         properties:
1306             name:
1307                 str_replace:
1308                     template: $vnf_name-app_oam_1_port_0
1309                     params:
1310                         $vnf_name:
1311                             get_param: vnf_name
1312             network: { get_param: oam_net_id }
1313             replacement_policy: AUTO
1314             fixed_ips:
1315                 -
1316                     ip_address: {get_param: [app_oam_ips, 1]}
1317                     
1318             security_groups:
1319 #                get_param: app_security_groups
1320                 get_param: oam_security_groups
1321         metadata:
1322             os_net: { get_param: oam_net_id }
1323             ext_net: oam    
1324
1325     app_data_0_port_1:
1326         type: OS::Neutron::Port
1327         properties:
1328             name:
1329                 str_replace:
1330                     template: $vnf_name-app_data_1_port_0
1331                     params:
1332                         $vnf_name:
1333                             get_param: vnf_name
1334             network: { get_param: data_net_id }
1335             replacement_policy: AUTO
1336             fixed_ips:
1337                 -
1338                     ip_address: {get_param: [app_data_v6_ips, 1]}
1339             security_groups:
1340 #                get_param: app_security_groups
1341                 get_param: data_security_groups
1342         metadata:
1343             os_net: { get_param: data_net_id }
1344             ext_net: data
1345
1346     'node:m007:server':
1347         type: OS::Nova::Server
1348         properties:
1349             name: { get_param: [app_names, 2]}
1350             availability_zone:
1351                 get_param: availability_zone_0
1352             image:
1353                 get_param: app_image_name
1354             flavor:
1355                 get_param: app_flavor_name
1356             image_update_policy: REBUILD
1357             config_drive: 'True'
1358             block_device_mapping:
1359                 -
1360                     delete_on_termination: 'false'
1361                     device_name: vdb
1362                     volume_id:
1363                         get_param: app_volume_id_2
1364             networks:
1365                 -
1366                     port:
1367                         get_resource: app_internal_0_port_2
1368                 -
1369                     port:
1370                         get_resource: app_oam_0_port_2
1371                 -
1372                     port:
1373                         get_resource: app_data_0_port_2
1374             user_data_format: RAW
1375             user_data:
1376                 str_replace:
1377                     template:
1378                         get_file: node_userdata_script.sh
1379 #                        get_param: _node_userdata_script_
1380                     params:
1381                         __heat_stack_name__:
1382                             get_param: 'OS::stack_name'
1383                         __node_siteinfo_url__: { get_param: siteinfo_url }
1384                         __ieccf_config_url__: { get_param: ieccf_config_url }
1385                         __ieccf_debug__: { get_param: ieccf_debug }
1386                         __activepilot_ip__:
1387                             get_attr:
1388                                 - 'network:system:vip:m001:m002'
1389 #                                - 'network_system_vip_m001_m002'
1390                                 - fixed_ips
1391                                 - 0
1392                                 - ip_address
1393                         __host_key__:
1394                             get_attr:
1395                                 - 'sysinfo:host_key'
1396                                 - value
1397                         __pilot__: ''
1398                         __script_url__: ''
1399                         __script_args__: ''
1400                         __os_cacert__: ''
1401                         __cs_cacert__: ''
1402                         __post_exec__: ''
1403                         __ignore_siteinfo_audit__:
1404                             get_param: ignore_siteinfo_audit
1405                         __nameserver1__: {get_param: name_server_1}
1406                         __nameserver2__: {get_param: name_server_2}
1407                         __domain__: {get_param: domain}
1408             scheduler_hints: 
1409                 group: {get_resource: app_server_group}
1410
1411             metadata:
1412                 vnf_id: {get_param: vnf_id}
1413                 vnf_name: {get_param: vnf_name}
1414                 vf_module_id: {get_param: vf_module_id}
1415                 vf_module_name: {get_param: vf_module_name}
1416                 vm_role: app
1417         metadata:
1418             mcas_id: m007
1419             networks:
1420                 -
1421                     get_attr:
1422                         - app_internal_2_port_0
1423                         - network_id
1424                 -
1425                     get_attr:
1426                         - app_oam_2_port_0
1427                         - network_id
1428                 -
1429                     get_attr:
1430                         - app_data_2_port_0
1431                         - network_id
1432     app_internal_0_port_2:
1433         type: OS::Neutron::Port
1434         properties:
1435             name:
1436                 str_replace:
1437                     template: $vnf_name-app_internal_2_port_0
1438                     params:
1439                         $vnf_name:
1440                             get_param: vnf_name
1441             network: {get_resource: internal_net_0 }
1442             replacement_policy: AUTO
1443             allowed_address_pairs:
1444                 -
1445                     ip_address: {get_param: internal_subnet_cidr}
1446             security_groups:
1447                 get_param: app_security_groups
1448         metadata:
1449             os_net: {get_resource: internal_net_0 }
1450
1451     app_oam_0_port_2:
1452         type: OS::Neutron::Port
1453         properties:
1454             name:
1455                 str_replace:
1456                     template: $vnf_name-app_oam_2_port_0
1457                     params:
1458                         $vnf_name:
1459                             get_param: vnf_name
1460             network: { get_param: oam_net_id }
1461             replacement_policy: AUTO
1462             fixed_ips:
1463                 -
1464                     ip_address: {get_param: [app_oam_ips, 2]}
1465                     
1466             security_groups:
1467 #                get_param: app_security_groups
1468                 get_param: oam_security_groups
1469         metadata:
1470             os_net: { get_param: oam_net_id }
1471             ext_net: oam    
1472
1473     app_data_0_port_2:
1474         type: OS::Neutron::Port
1475         properties:
1476             name:
1477                 str_replace:
1478                     template: $vnf_name-app_data_2_port_0
1479                     params:
1480                         $vnf_name:
1481                             get_param: vnf_name
1482             network: { get_param: data_net_id }
1483             replacement_policy: AUTO
1484             fixed_ips:
1485                 -
1486                     ip_address: {get_param: [app_data_v6_ips, 2]}
1487             security_groups:
1488 #                get_param: app_security_groups
1489                 get_param: data_security_groups
1490         metadata:
1491             os_net: { get_param: data_net_id }
1492             ext_net: data
1493
1494
1495     'sysinfo:input_store':  # What is the purpose of this?
1496         type: 'OS::Heat::RandomString'
1497         metadata:
1498             parameters:
1499                 vnf_name:
1500                     get_param: vnf_name
1501                 __os_cacert__:
1502                     get_param: openstack_cacert
1503 #                    get_file: openstack_cacert.crt
1504                 __cs_cacert__:
1505                     get_param: config_server_cacert
1506 #                    get_file: config_server_cacert.crt
1507                 ignore_siteinfo_audit:
1508                     get_param: ignore_siteinfo_audit
1509                 m001_avail_zone:
1510                     get_param: availability_zone_0
1511                 m001_image:
1512                     get_param: plt_image_name
1513                 m001_flavor:
1514                     get_param: plt_flavor_name
1515                 m001_security_groups:
1516                     get_param: plt_security_groups
1517                 m002_avail_zone:
1518                     get_param: availability_zone_1
1519                 m002_image:
1520                     get_param: plt_image_name
1521                 m002_flavor:
1522                     get_param: plt_flavor_name
1523                 m002_security_groups:
1524                     get_param: plt_security_groups
1525                 m003_avail_zone:
1526                     get_param: availability_zone_0
1527                 m003_image:
1528                     get_param: iox_image_name
1529                 m003_flavor:
1530                     get_param: iox_flavor_name
1531                 m003_security_groups:
1532                     get_param: iox_security_groups
1533                 m004_avail_zone:
1534                     get_param: availability_zone_1
1535                 m004_image:
1536                     get_param: iox_image_name
1537                 m004_flavor:
1538                     get_param: iox_flavor_name
1539                 m004_security_groups:
1540                     get_param: iox_security_groups
1541                 m005_avail_zone:
1542                     get_param: availability_zone_0
1543                 m005_image:
1544                     get_param: app_image_name
1545                 m005_flavor:
1546                     get_param: app_flavor_name
1547                 m005_security_groups:
1548                     get_param: app_security_groups
1549                 m006_avail_zone:
1550                     get_param: availability_zone_1
1551                 m006_image:
1552                     get_param: app_image_name
1553                 m006_flavor:
1554                     get_param: app_flavor_name
1555                 m006_security_groups:
1556                     get_param: app_security_groups
1557                 m007_avail_zone:
1558                     get_param: availability_zone_0
1559                 m007_image:
1560                     get_param: app_image_name
1561                 m007_flavor:
1562                     get_param: app_flavor_name
1563                 m007_security_groups:
1564                     get_param: app_security_groups
1565                 m008_avail_zone:
1566                     get_param: availability_zone_1
1567                 m008_image:
1568                     get_param: app_image_name
1569                 m008_flavor:
1570                     get_param: app_flavor_name
1571                 m008_security_groups:
1572                     get_param: app_security_groups
1573                 m009_avail_zone:
1574                     get_param: availability_zone_0
1575                 m009_image:
1576                     get_param: app_image_name
1577                 m009_flavor:
1578                     get_param: app_flavor_name
1579                 m009_security_groups:
1580                     get_param: app_security_groups
1581                 m010_avail_zone:
1582                     get_param: availability_zone_1
1583                 m010_image:
1584                     get_param: app_image_name
1585                 m010_flavor:
1586                     get_param: app_flavor_name
1587                 m010_security_groups:
1588                     get_param: app_security_groups
1589                 m011_avail_zone:
1590                     get_param: availability_zone_0
1591                 m011_image:
1592                     get_param: app_image_name
1593                 m011_flavor:
1594                     get_param: app_flavor_name
1595                 m011_security_groups:
1596                     get_param: app_security_groups
1597     'sysinfo:host_key':
1598         type: 'OS::Heat::RandomString'
1599         properties:
1600             length: 255
1601
1602 outputs:
1603     oam_management_v4_address:
1604         value: {get_param: plt_oam_floating_ip}