1 heat_template_version: 2015-04-30
3 description: Pronghorn Openstack Heat Template
7 label: Database OAM Network
8 description: Name of the OAM network for the database servers
12 description: List of ports to apply to the security group for all VMs
13 type: comma_delimited_list
15 label: Common Protocols
16 description: List of protocols associated with the common_ports
17 type: comma_delimited_list
20 description: List of ports to apply to the security group for the database VMs
21 type: comma_delimited_list
23 label: Database Protocols
24 description: List of protocols associated with the db_ports
25 type: comma_delimited_list
27 label: Application Ports
28 description: List of ports to apply to the security group for the application VMs
29 type: comma_delimited_list
31 label: Application Protocols
32 description: List of protocols associated with the app_ports
33 type: comma_delimited_list
39 description: Unique ID for this VF instance
43 description: Unique ID for this VF Module instance
47 description: Role for the DB VM
51 description: Role for the App VM
58 label: First Availability Zone
59 description: Name of the first availability zone
63 # database server networks, ips and hostnames
66 label: Database Hostname
67 description: Hostname of the database server
70 label: Database OAM IP Addresse
71 description: OAM IP Address of the database server
74 # database common server info (flavor, image, keypair)
77 label: Database Flavor
78 description: Flavor of the database server
82 description: Image of the database server
85 label: Database Public Key
86 description: Public ssh key for the database servers
89 label: Database Deployment Timeout
90 description: Timeout in seconds before declaring the database stack as failed
93 - range: { min: 60, max: 3600 }
99 label: Data Volume IDs for disk 0
100 description: IDs to be used for the database volumes
103 label: Data Volume IDs for disk 1
104 description: IDs to be used for the database volumes
107 label: Data Volume IDs for disk 2
108 description: IDs to be used for the database volumes
111 label: Data Volume IDs for disk 3
112 description: IDs to be used for the database volumes
117 # application server networks, ips and hostnames
120 label: Application Hostname
121 description: Hostname of the application server
124 label: Application OAM IP Address
125 description: OAM IP Address of the application server
128 # application common server info (flavor, image, keypair)
132 description: Flavor to be used for the application server
136 description: Image to be used for the application server
139 label: Application Public Key
140 description: Public ssh key for the application servers
144 label: Application Deployment Timeout
145 description: Timeout in seconds before declaring the application stack as failed
148 - range: { min: 60, max: 3600 }
152 # define unique keypairs for each role
155 type: OS::Nova::KeyPair
157 name: pronghorn database key
158 public_key: { get_param: db_public_key }
159 save_private_key: false
161 type: OS::Nova::KeyPair
163 name: pronghorn application key
164 public_key: { get_param: app_public_key }
165 save_private_key: false
168 # define security groups for each role
171 # NOTE: I would like to use the repeat/for_each function to iterate over these lists
172 # My local Mirantis 7 testing environment contains the following bug:
174 # ERROR: The values of the "for_each" argument to "repeat" must be lists
176 common_security_group:
177 type: OS::Neutron::SecurityGroup
179 name: common security group
181 - protocol: { get_param: [ common_protocols, 0 ] }
182 port_range_min: { get_param: [ common_ports, 0 ] }
183 port_range_max: { get_param: [ common_ports, 0 ] }
184 - protocol: { get_param: [ common_protocols, 1 ] }
185 port_range_min: { get_param: [ common_ports, 1 ] }
186 port_range_max: { get_param: [ common_ports, 1 ] }
187 - protocol: { get_param: [ common_protocols, 2 ] }
188 port_range_min: { get_param: [ common_ports, 2 ] }
189 port_range_max: { get_param: [ common_ports, 2 ] }
190 - protocol: { get_param: [ common_protocols, 3 ] }
191 port_range_min: { get_param: [ common_ports, 3 ] }
192 port_range_max: { get_param: [ common_ports, 3 ] }
194 type: OS::Neutron::SecurityGroup
196 name: data security group
198 - protocol: { get_param: [ db_protocols, 0 ] }
199 port_range_min: { get_param: [ db_ports, 0 ] }
200 port_range_max: { get_param: [ db_ports, 0 ] }
202 type: OS::Neutron::SecurityGroup
204 name: app security group
206 - protocol: { get_param: [ app_protocols, 0 ] }
207 port_range_min: { get_param: [ app_ports, 0 ] }
208 port_range_max: { get_param: [ app_ports, 0 ] }
211 # create the database servers
214 type: OS::Nova::ServerGroup
216 name: data server group
221 type: OS::Heat::ResourceGroup
225 type: nested_db_server.yaml
227 server_group_id: { get_resource: db_server_group }
228 vnf_id: { get_param: vnf_id }
229 vf_module_id: { get_param: vf_module_id }
230 vm_role: { get_param: db_vm_role }
231 availability_zone_0: { get_param: availability_zone_0 }
232 oam_net_name: { get_param: oam_net_name }
233 db_name: { get_param: db_name }
234 db_oam_ip_0: { get_param: db_oam_ip_0 }
236 - { get_resource: common_security_group }
237 - { get_resource: db_security_group }
238 keypair_id: { get_resource: db_keypair }
239 db_flavor_name: { get_param: db_flavor_name }
240 db_image_name: { get_param: db_image_name }
241 db_volume_id_0: { get_param: db_volume_id_0 }
242 db_volume_id_1: { get_param: db_volume_id_1 }
243 db_volume_id_2: { get_param: db_volume_id_2 }
244 db_volume_id_3: { get_param: db_volume_id_3 }
245 deploy_timeout: { get_param: db_deploy_timeout }
249 # create the application servers
252 type: OS::Nova::ServerGroup
254 name: app server group
259 type: OS::Heat::ResourceGroup
263 type: nested_app_server.yaml
265 server_group_id: { get_resource: app_server_group }
266 vnf_id: { get_param: vnf_id }
267 vf_module_id: { get_param: vf_module_id }
268 vm_role: { get_param: app_vm_role }
269 availability_zone_0: { get_param: availability_zone_0 }
270 oam_net_name: { get_param: oam_net_name }
271 app_name: { get_param: app_name }
272 app_oam_ip_0: { get_param: app_oam_ip_0 }
274 - { get_resource: common_security_group }
275 - { get_resource: app_security_group }
276 keypair_id: { get_resource: app_keypair }
277 app_flavor_name: { get_param: app_flavor_name }
278 app_image_name: { get_param: app_image_name }
279 deploy_timeout: { get_param: app_deploy_timeout }
283 # No outputs as the base_pronghorn is the only VNF component