1 heat_template_version: 2016-10-14
2 description: 'OpenStack {{role}} node configured by Puppet'
4 Overcloud{{role}}Flavor:
5 description: Flavor for the {{role}} node.
9 - custom_constraint: nova.flavor
12 default: overcloud-full
14 - custom_constraint: glance.image
16 default: 'REBUILD_PRESERVE_EPHEMERAL'
17 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
20 description: Name of an existing Nova key pair to enable SSH access to the instances
24 - custom_constraint: nova.keypair
27 description: Mapping of service_name -> network name. Typically set
28 via parameter_defaults in the resource registry.
32 description: Mapping of service endpoint -> protocol. Typically set
33 via parameter_defaults in the resource registry.
39 Setting to a previously unused value during stack-update will trigger
40 package update on all nodes
43 default: '' # Defaults to Heat created hostname
47 description: Optional mapping to override hostnames
51 Additional hiera configuration to inject into the cluster. Note
52 that {{role}}ExtraConfig takes precedence over ExtraConfig.
57 Role specific additional hiera configuration to inject into the cluster.
62 NetworkDeploymentActions:
63 type: comma_delimited_list
65 Heat action when to apply network configuration changes
67 SoftwareConfigTransport:
68 default: POLL_SERVER_CFN
70 How the server should receive the metadata required for software configuration.
73 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
75 default: 'localdomain'
78 The DNS domain used for the hosts. This should match the dhcp_domain
79 configured in the Undercloud neutron. Defaults to localdomain.
83 Extra properties or metadata passed to Nova for the created nodes in
84 the overcloud. It's accessible via the Nova metadata API.
86 {{role}}SchedulerHints:
88 description: Optional scheduler hints to pass to nova
93 ServiceConfigSettings:
97 type: comma_delimited_list
99 MonitoringSubscriptions:
100 type: comma_delimited_list
104 description: Command which will be run whenever configuration data changes
105 default: os-refresh-config --timeout 14400
110 type: comma_delimited_list
115 type: OS::TripleO::Server
118 command: {get_param: ConfigCommand}
120 image: {get_param: {{role}}Image}
121 image_update_policy: {get_param: ImageUpdatePolicy}
122 flavor: {get_param: Overcloud{{role}}Flavor}
123 key_name: {get_param: KeyName}
126 user_data_format: SOFTWARE_CONFIG
127 user_data: {get_resource: UserData}
130 template: {get_param: Hostname}
131 params: {get_param: HostnameMap}
132 software_config_transport: {get_param: SoftwareConfigTransport}
133 metadata: {get_param: ServerMetadata}
134 scheduler_hints: {get_param: {{role}}SchedulerHints}
136 # Combine the NodeAdminUserData and NodeUserData mime archives
138 type: OS::Heat::MultipartMime
141 - config: {get_resource: NodeAdminUserData}
143 - config: {get_resource: NodeUserData}
146 # Creates the "heat-admin" user if configured via the environment
147 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
149 type: OS::TripleO::NodeAdminUserData
151 # For optional operator additional userdata
152 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
154 type: OS::TripleO::NodeUserData
157 type: OS::TripleO::{{role}}::Ports::ExternalPort
159 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
160 IPPool: {get_param: {{role}}IPs}
161 NodeIndex: {get_param: NodeIndex}
164 type: OS::TripleO::{{role}}::Ports::InternalApiPort
166 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
167 IPPool: {get_param: {{role}}IPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::{{role}}::Ports::StoragePort
173 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
174 IPPool: {get_param: {{role}}IPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::{{role}}::Ports::StorageMgmtPort
180 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
181 IPPool: {get_param: {{role}}IPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::{{role}}::Ports::TenantPort
187 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
188 IPPool: {get_param: {{role}}IPs}
189 NodeIndex: {get_param: NodeIndex}
192 type: OS::TripleO::{{role}}::Ports::ManagementPort
194 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
195 IPPool: {get_param: {{role}}IPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::{{role}}::Net::SoftwareConfig
201 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
202 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
203 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
204 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
205 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
206 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
207 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
210 type: OS::TripleO::Network::Ports::NetIpMap
212 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
213 ExternalIp: {get_attr: [ExternalPort, ip_address]}
214 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
215 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
216 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
217 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
218 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
219 StorageIp: {get_attr: [StoragePort, ip_address]}
220 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
221 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
222 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
223 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
224 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
225 TenantIp: {get_attr: [TenantPort, ip_address]}
226 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
227 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
228 ManagementIp: {get_attr: [ManagementPort, ip_address]}
229 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
230 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
233 type: OS::TripleO::SoftwareDeployment
235 name: NetworkDeployment
236 config: {get_resource: NetworkConfig}
237 server: {get_resource: {{role}}}
238 actions: {get_param: NetworkDeploymentActions}
241 type: OS::Heat::StructuredDeployment
242 depends_on: NetworkDeployment
244 name: {{role}}Deployment
245 config: {get_resource: {{role}}Config}
246 server: {get_resource: {{role}}}
248 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
251 type: OS::Heat::StructuredConfig
257 - heat_config_%{::deploy_config_name}
258 - {{role.lower()}}_extraconfig
263 - bootstrap_node # provided by allNodesConfig
264 - all_nodes # provided by allNodesConfig
265 - vip_data # provided by allNodesConfig
267 merge_behavior: deeper
270 service_names: {get_param: ServiceNames}
271 sensu::subscriptions: {get_param: MonitoringSubscriptions}
274 - {get_param: ServiceConfigSettings}
275 - values: {get_attr: [NetIpMap, net_ip_map]}
276 {{role.lower()}}_extraconfig: {get_param: {{role}}ExtraConfig}
277 extraconfig: {get_param: ExtraConfig}
279 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
280 tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
281 tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
285 - - {get_attr: [{{role}}, name]}
287 - {get_param: CloudDomain}
291 - - {get_attr: [{{role}}, name]}
293 - {get_param: CloudDomain}
297 - - {get_attr: [{{role}}, name]}
299 - {get_param: CloudDomain}
303 - - {get_attr: [{{role}}, name]}
305 - {get_param: CloudDomain}
309 - - {get_attr: [{{role}}, name]}
311 - {get_param: CloudDomain}
315 - - {get_attr: [{{role}}, name]}
317 - {get_param: CloudDomain}
319 # Resource for site-specific injection of root certificate
321 depends_on: {{role}}Deployment
322 type: OS::TripleO::NodeTLSCAData
324 server: {get_resource: {{role}}}
326 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
327 {{role}}ExtraConfigPre:
328 depends_on: {{role}}Deployment
329 type: OS::TripleO::{{role}}ExtraConfigPre
331 server: {get_resource: {{role}}}
333 # Hook for site-specific additional pre-deployment config,
334 # applying to all nodes, e.g node registration/unregistration
336 depends_on: [{{role}}ExtraConfigPre, NodeTLSCAData]
337 type: OS::TripleO::NodeExtraConfig
339 server: {get_resource: {{role}}}
342 type: OS::TripleO::Tasks::PackageUpdate
345 type: OS::Heat::SoftwareDeployment
347 config: {get_resource: UpdateConfig}
348 server: {get_resource: {{role}}}
351 get_param: UpdateIdentifier
355 description: IP address of the server in the ctlplane network
356 value: {get_attr: [{{role}}, networks, ctlplane, 0]}
358 description: Hostname of the server
359 value: {get_attr: [{{role}}, name]}
361 description: Mapping of network names to hostnames
366 - - {get_attr: [{{role}}, name]}
368 - {get_param: CloudDomain}
372 - - {get_attr: [{{role}}, name]}
374 - {get_param: CloudDomain}
378 - - {get_attr: [{{role}}, name]}
380 - {get_param: CloudDomain}
384 - - {get_attr: [{{role}}, name]}
386 - {get_param: CloudDomain}
390 - - {get_attr: [{{role}}, name]}
392 - {get_param: CloudDomain}
396 - - {get_attr: [{{role}}, name]}
398 - {get_param: CloudDomain}
402 - - {get_attr: [{{role}}, name]}
404 - {get_param: CloudDomain}
409 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
410 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
411 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
412 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
413 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
414 TENANTIP TENANTHOST.DOMAIN TENANTHOST
415 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
416 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
418 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
419 DOMAIN: {get_param: CloudDomain}
420 PRIMARYHOST: {get_attr: [{{role}}, name]}
421 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
425 - - {get_attr: [{{role}}, name]}
427 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
431 - - {get_attr: [{{role}}, name]}
433 STORAGEIP: {get_attr: [StoragePort, ip_address]}
437 - - {get_attr: [{{role}}, name]}
439 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
443 - - {get_attr: [{{role}}, name]}
445 TENANTIP: {get_attr: [TenantPort, ip_address]}
449 - - {get_attr: [{{role}}, name]}
451 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
455 - - {get_attr: [{{role}}, name]}
457 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
461 - - {get_attr: [{{role}}, name]}
463 nova_server_resource:
464 description: Heat resource handle for {{role}} server
466 {get_resource: {{role}}}
468 description: IP address of the server in the external network
469 value: {get_attr: [ExternalPort, ip_address]}
470 internal_api_ip_address:
471 description: IP address of the server in the internal_api network
472 value: {get_attr: [InternalApiPort, ip_address]}
474 description: IP address of the server in the storage network
475 value: {get_attr: [StoragePort, ip_address]}
476 storage_mgmt_ip_address:
477 description: IP address of the server in the storage_mgmt network
478 value: {get_attr: [StorageMgmtPort, ip_address]}
480 description: IP address of the server in the tenant network
481 value: {get_attr: [TenantPort, ip_address]}
482 management_ip_address:
483 description: IP address of the server in the management network
484 value: {get_attr: [ManagementPort, ip_address]}