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.
8 {% if disable_constraints is not defined %}
10 - custom_constraint: nova.flavor
14 default: overcloud-full
15 {% if disable_constraints is not defined %}
17 - custom_constraint: glance.image
20 default: 'REBUILD_PRESERVE_EPHEMERAL'
21 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
24 description: Name of an existing Nova key pair to enable SSH access to the instances
27 {% if disable_constraints is not defined %}
29 - custom_constraint: nova.keypair
31 NeutronPublicInterface:
33 description: What interface to bridge onto br-ex for network nodes.
37 description: Mapping of service_name -> network name. Typically set
38 via parameter_defaults in the resource registry.
42 description: Mapping of service endpoint -> protocol. Typically set
43 via parameter_defaults in the resource registry.
49 Setting to a previously unused value during stack-update will trigger
50 package update on all nodes
53 default: '' # Defaults to Heat created hostname
57 description: Optional mapping to override hostnames
61 Additional hiera configuration to inject into the cluster. Note
62 that {{role}}ExtraConfig takes precedence over ExtraConfig.
67 Role specific additional hiera configuration to inject into the cluster.
72 NetworkDeploymentActions:
73 type: comma_delimited_list
75 Heat action when to apply network configuration changes
77 SoftwareConfigTransport:
78 default: POLL_SERVER_CFN
80 How the server should receive the metadata required for software configuration.
83 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
85 default: 'localdomain'
88 The DNS domain used for the hosts. This should match the dhcp_domain
89 configured in the Undercloud neutron. Defaults to localdomain.
93 Extra properties or metadata passed to Nova for the created nodes in
94 the overcloud. It's accessible via the Nova metadata API.
96 {{role}}SchedulerHints:
98 description: Optional scheduler hints to pass to nova
103 ServiceConfigSettings:
107 type: comma_delimited_list
109 MonitoringSubscriptions:
110 type: comma_delimited_list
114 description: Command which will be run whenever configuration data changes
115 default: os-refresh-config --timeout 14400
120 type: comma_delimited_list
125 type: OS::TripleO::Server
128 command: {get_param: ConfigCommand}
130 image: {get_param: {{role}}Image}
131 image_update_policy: {get_param: ImageUpdatePolicy}
132 flavor: {get_param: Overcloud{{role}}Flavor}
133 key_name: {get_param: KeyName}
136 user_data_format: SOFTWARE_CONFIG
137 user_data: {get_resource: UserData}
140 template: {get_param: Hostname}
141 params: {get_param: HostnameMap}
142 software_config_transport: {get_param: SoftwareConfigTransport}
143 metadata: {get_param: ServerMetadata}
144 scheduler_hints: {get_param: {{role}}SchedulerHints}
146 # Combine the NodeAdminUserData and NodeUserData mime archives
148 type: OS::Heat::MultipartMime
151 - config: {get_resource: NodeAdminUserData}
153 - config: {get_resource: NodeUserData}
156 # Creates the "heat-admin" user if configured via the environment
157 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
159 type: OS::TripleO::NodeAdminUserData
161 # For optional operator additional userdata
162 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
164 type: OS::TripleO::NodeUserData
167 type: OS::TripleO::{{role}}::Ports::ExternalPort
169 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
170 IPPool: {get_param: {{role}}IPs}
171 NodeIndex: {get_param: NodeIndex}
174 type: OS::TripleO::{{role}}::Ports::InternalApiPort
176 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
177 IPPool: {get_param: {{role}}IPs}
178 NodeIndex: {get_param: NodeIndex}
181 type: OS::TripleO::{{role}}::Ports::StoragePort
183 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
184 IPPool: {get_param: {{role}}IPs}
185 NodeIndex: {get_param: NodeIndex}
188 type: OS::TripleO::{{role}}::Ports::StorageMgmtPort
190 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
191 IPPool: {get_param: {{role}}IPs}
192 NodeIndex: {get_param: NodeIndex}
195 type: OS::TripleO::{{role}}::Ports::TenantPort
197 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
198 IPPool: {get_param: {{role}}IPs}
199 NodeIndex: {get_param: NodeIndex}
202 type: OS::TripleO::{{role}}::Ports::ManagementPort
204 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
205 IPPool: {get_param: {{role}}IPs}
206 NodeIndex: {get_param: NodeIndex}
209 type: OS::TripleO::{{role}}::Net::SoftwareConfig
211 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
212 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
213 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
214 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
215 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
216 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
217 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
220 type: OS::TripleO::Network::Ports::NetIpMap
222 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
223 ExternalIp: {get_attr: [ExternalPort, ip_address]}
224 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
225 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
226 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
227 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
228 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
229 StorageIp: {get_attr: [StoragePort, ip_address]}
230 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
231 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
232 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
233 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
234 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
235 TenantIp: {get_attr: [TenantPort, ip_address]}
236 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
237 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
238 ManagementIp: {get_attr: [ManagementPort, ip_address]}
239 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
240 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
243 type: OS::Heat::Value
251 - - {get_attr: [{{role}}, name]}
253 - {get_param: CloudDomain}
257 - - {get_attr: [{{role}}, name]}
263 - - {get_attr: [{{role}}, name]}
265 - {get_param: CloudDomain}
269 - - {get_attr: [{{role}}, name]}
275 - - {get_attr: [{{role}}, name]}
277 - {get_param: CloudDomain}
281 - - {get_attr: [{{role}}, name]}
287 - - {get_attr: [{{role}}, name]}
289 - {get_param: CloudDomain}
293 - - {get_attr: [{{role}}, name]}
299 - - {get_attr: [{{role}}, name]}
301 - {get_param: CloudDomain}
305 - - {get_attr: [{{role}}, name]}
311 - - {get_attr: [{{role}}, name]}
313 - {get_param: CloudDomain}
317 - - {get_attr: [{{role}}, name]}
323 - - {get_attr: [{{role}}, name]}
325 - {get_param: CloudDomain}
329 - - {get_attr: [{{role}}, name]}
333 type: OS::TripleO::SoftwareDeployment
335 name: NetworkDeployment
336 config: {get_resource: NetworkConfig}
337 server: {get_resource: {{role}}}
338 actions: {get_param: NetworkDeploymentActions}
341 interface_name: {get_param: NeutronPublicInterface}
344 type: OS::Heat::StructuredDeployment
345 depends_on: NetworkDeployment
347 name: {{role}}Deployment
348 config: {get_resource: {{role}}Config}
349 server: {get_resource: {{role}}}
351 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
354 type: OS::Heat::StructuredConfig
360 - heat_config_%{::deploy_config_name}
361 - {{role.lower()}}_extraconfig
366 - bootstrap_node # provided by allNodesConfig
367 - all_nodes # provided by allNodesConfig
368 - vip_data # provided by allNodesConfig
370 merge_behavior: deeper
373 service_names: {get_param: ServiceNames}
374 sensu::subscriptions: {get_param: MonitoringSubscriptions}
377 - {get_param: ServiceConfigSettings}
378 - values: {get_attr: [NetIpMap, net_ip_map]}
379 {{role.lower()}}_extraconfig: {get_param: {{role}}ExtraConfig}
380 extraconfig: {get_param: ExtraConfig}
382 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
383 tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
384 tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
385 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
386 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
387 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
388 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
389 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
390 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
392 # Resource for site-specific injection of root certificate
394 depends_on: {{role}}Deployment
395 type: OS::TripleO::NodeTLSCAData
397 server: {get_resource: {{role}}}
399 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
400 {{role}}ExtraConfigPre:
401 depends_on: {{role}}Deployment
402 type: OS::TripleO::{{role}}ExtraConfigPre
404 server: {get_resource: {{role}}}
406 # Hook for site-specific additional pre-deployment config,
407 # applying to all nodes, e.g node registration/unregistration
409 depends_on: [{{role}}ExtraConfigPre, NodeTLSCAData]
410 type: OS::TripleO::NodeExtraConfig
412 server: {get_resource: {{role}}}
415 type: OS::TripleO::Tasks::PackageUpdate
418 type: OS::Heat::SoftwareDeployment
420 config: {get_resource: UpdateConfig}
421 server: {get_resource: {{role}}}
424 get_param: UpdateIdentifier
428 description: IP address of the server in the ctlplane network
429 value: {get_attr: [{{role}}, networks, ctlplane, 0]}
431 description: Hostname of the server
432 value: {get_attr: [{{role}}, name]}
434 description: Mapping of network names to hostnames
436 external: {get_attr: [NetHostMap, value, external, fqdn]}
437 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
438 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
439 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
440 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
441 management: {get_attr: [NetHostMap, value, management, fqdn]}
442 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
447 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
448 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
449 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
450 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
451 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
452 TENANTIP TENANTHOST.DOMAIN TENANTHOST
453 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
454 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
456 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
457 DOMAIN: {get_param: CloudDomain}
458 PRIMARYHOST: {get_attr: [{{role}}, name]}
459 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
460 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
461 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
462 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
463 STORAGEIP: {get_attr: [StoragePort, ip_address]}
464 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
465 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
466 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
467 TENANTIP: {get_attr: [TenantPort, ip_address]}
468 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
469 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
470 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
471 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
472 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
473 nova_server_resource:
474 description: Heat resource handle for {{role}} server
476 {get_resource: {{role}}}
478 description: IP address of the server in the external network
479 value: {get_attr: [ExternalPort, ip_address]}
480 internal_api_ip_address:
481 description: IP address of the server in the internal_api network
482 value: {get_attr: [InternalApiPort, ip_address]}
484 description: IP address of the server in the storage network
485 value: {get_attr: [StoragePort, ip_address]}
486 storage_mgmt_ip_address:
487 description: IP address of the server in the storage_mgmt network
488 value: {get_attr: [StorageMgmtPort, ip_address]}
490 description: IP address of the server in the tenant network
491 value: {get_attr: [TenantPort, ip_address]}
492 management_ip_address:
493 description: IP address of the server in the management network
494 value: {get_attr: [ManagementPort, ip_address]}