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
33 description: Mapping of service_name -> network name. Typically set
34 via parameter_defaults in the resource registry.
38 description: Mapping of service endpoint -> protocol. Typically set
39 via parameter_defaults in the resource registry.
45 Setting to a previously unused value during stack-update will trigger
46 package update on all nodes
49 default: '' # Defaults to Heat created hostname
53 description: Optional mapping to override hostnames
57 Additional hiera configuration to inject into the cluster. Note
58 that {{role}}ExtraConfig takes precedence over ExtraConfig.
63 Role specific additional hiera configuration to inject into the cluster.
68 NetworkDeploymentActions:
69 type: comma_delimited_list
71 Heat action when to apply network configuration changes
73 SoftwareConfigTransport:
74 default: POLL_SERVER_CFN
76 How the server should receive the metadata required for software configuration.
79 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
81 default: 'localdomain'
84 The DNS domain used for the hosts. This should match the dhcp_domain
85 configured in the Undercloud neutron. Defaults to localdomain.
89 Extra properties or metadata passed to Nova for the created nodes in
90 the overcloud. It's accessible via the Nova metadata API.
92 {{role}}SchedulerHints:
94 description: Optional scheduler hints to pass to nova
99 ServiceConfigSettings:
103 type: comma_delimited_list
105 MonitoringSubscriptions:
106 type: comma_delimited_list
110 description: Command which will be run whenever configuration data changes
111 default: os-refresh-config --timeout 14400
116 type: comma_delimited_list
121 type: OS::TripleO::Server
124 command: {get_param: ConfigCommand}
126 image: {get_param: {{role}}Image}
127 image_update_policy: {get_param: ImageUpdatePolicy}
128 flavor: {get_param: Overcloud{{role}}Flavor}
129 key_name: {get_param: KeyName}
132 user_data_format: SOFTWARE_CONFIG
133 user_data: {get_resource: UserData}
136 template: {get_param: Hostname}
137 params: {get_param: HostnameMap}
138 software_config_transport: {get_param: SoftwareConfigTransport}
139 metadata: {get_param: ServerMetadata}
140 scheduler_hints: {get_param: {{role}}SchedulerHints}
142 # Combine the NodeAdminUserData and NodeUserData mime archives
144 type: OS::Heat::MultipartMime
147 - config: {get_resource: NodeAdminUserData}
149 - config: {get_resource: NodeUserData}
152 # Creates the "heat-admin" user if configured via the environment
153 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
155 type: OS::TripleO::NodeAdminUserData
157 # For optional operator additional userdata
158 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
160 type: OS::TripleO::NodeUserData
163 type: OS::TripleO::{{role}}::Ports::ExternalPort
165 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
166 IPPool: {get_param: {{role}}IPs}
167 NodeIndex: {get_param: NodeIndex}
170 type: OS::TripleO::{{role}}::Ports::InternalApiPort
172 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
173 IPPool: {get_param: {{role}}IPs}
174 NodeIndex: {get_param: NodeIndex}
177 type: OS::TripleO::{{role}}::Ports::StoragePort
179 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
180 IPPool: {get_param: {{role}}IPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::{{role}}::Ports::StorageMgmtPort
186 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
187 IPPool: {get_param: {{role}}IPs}
188 NodeIndex: {get_param: NodeIndex}
191 type: OS::TripleO::{{role}}::Ports::TenantPort
193 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
194 IPPool: {get_param: {{role}}IPs}
195 NodeIndex: {get_param: NodeIndex}
198 type: OS::TripleO::{{role}}::Ports::ManagementPort
200 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
201 IPPool: {get_param: {{role}}IPs}
202 NodeIndex: {get_param: NodeIndex}
205 type: OS::TripleO::{{role}}::Net::SoftwareConfig
207 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
208 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
209 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
210 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
211 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
212 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
213 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
216 type: OS::TripleO::Network::Ports::NetIpMap
218 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
219 ExternalIp: {get_attr: [ExternalPort, ip_address]}
220 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
221 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
222 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
223 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
224 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
225 StorageIp: {get_attr: [StoragePort, ip_address]}
226 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
227 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
228 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
229 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
230 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
231 TenantIp: {get_attr: [TenantPort, ip_address]}
232 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
233 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
234 ManagementIp: {get_attr: [ManagementPort, ip_address]}
235 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
236 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
239 type: OS::Heat::Value
247 - - {get_attr: [{{role}}, name]}
249 - {get_param: CloudDomain}
253 - - {get_attr: [{{role}}, name]}
259 - - {get_attr: [{{role}}, name]}
261 - {get_param: CloudDomain}
265 - - {get_attr: [{{role}}, name]}
271 - - {get_attr: [{{role}}, name]}
273 - {get_param: CloudDomain}
277 - - {get_attr: [{{role}}, name]}
283 - - {get_attr: [{{role}}, name]}
285 - {get_param: CloudDomain}
289 - - {get_attr: [{{role}}, name]}
295 - - {get_attr: [{{role}}, name]}
297 - {get_param: CloudDomain}
301 - - {get_attr: [{{role}}, name]}
307 - - {get_attr: [{{role}}, name]}
309 - {get_param: CloudDomain}
313 - - {get_attr: [{{role}}, name]}
319 - - {get_attr: [{{role}}, name]}
321 - {get_param: CloudDomain}
325 - - {get_attr: [{{role}}, name]}
329 type: OS::TripleO::SoftwareDeployment
331 name: NetworkDeployment
332 config: {get_resource: NetworkConfig}
333 server: {get_resource: {{role}}}
334 actions: {get_param: NetworkDeploymentActions}
337 type: OS::Heat::StructuredDeployment
338 depends_on: NetworkDeployment
340 name: {{role}}Deployment
341 config: {get_resource: {{role}}Config}
342 server: {get_resource: {{role}}}
344 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
347 type: OS::Heat::StructuredConfig
353 - heat_config_%{::deploy_config_name}
354 - {{role.lower()}}_extraconfig
359 - bootstrap_node # provided by allNodesConfig
360 - all_nodes # provided by allNodesConfig
361 - vip_data # provided by allNodesConfig
363 merge_behavior: deeper
366 service_names: {get_param: ServiceNames}
367 sensu::subscriptions: {get_param: MonitoringSubscriptions}
370 - {get_param: ServiceConfigSettings}
371 - values: {get_attr: [NetIpMap, net_ip_map]}
372 {{role.lower()}}_extraconfig: {get_param: {{role}}ExtraConfig}
373 extraconfig: {get_param: ExtraConfig}
375 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
376 tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
377 tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
378 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
379 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
380 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
381 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
382 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
383 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
385 # Resource for site-specific injection of root certificate
387 depends_on: {{role}}Deployment
388 type: OS::TripleO::NodeTLSCAData
390 server: {get_resource: {{role}}}
392 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
393 {{role}}ExtraConfigPre:
394 depends_on: {{role}}Deployment
395 type: OS::TripleO::{{role}}ExtraConfigPre
397 server: {get_resource: {{role}}}
399 # Hook for site-specific additional pre-deployment config,
400 # applying to all nodes, e.g node registration/unregistration
402 depends_on: [{{role}}ExtraConfigPre, NodeTLSCAData]
403 type: OS::TripleO::NodeExtraConfig
405 server: {get_resource: {{role}}}
408 type: OS::TripleO::Tasks::PackageUpdate
411 type: OS::Heat::SoftwareDeployment
413 config: {get_resource: UpdateConfig}
414 server: {get_resource: {{role}}}
417 get_param: UpdateIdentifier
421 description: IP address of the server in the ctlplane network
422 value: {get_attr: [{{role}}, networks, ctlplane, 0]}
424 description: Hostname of the server
425 value: {get_attr: [{{role}}, name]}
427 description: Mapping of network names to hostnames
429 external: {get_attr: [NetHostMap, value, external, fqdn]}
430 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
431 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
432 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
433 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
434 management: {get_attr: [NetHostMap, value, management, fqdn]}
435 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
440 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
441 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
442 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
443 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
444 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
445 TENANTIP TENANTHOST.DOMAIN TENANTHOST
446 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
447 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
449 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
450 DOMAIN: {get_param: CloudDomain}
451 PRIMARYHOST: {get_attr: [{{role}}, name]}
452 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
453 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
454 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
455 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
456 STORAGEIP: {get_attr: [StoragePort, ip_address]}
457 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
458 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
459 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
460 TENANTIP: {get_attr: [TenantPort, ip_address]}
461 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
462 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
463 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
464 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
465 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
466 nova_server_resource:
467 description: Heat resource handle for {{role}} server
469 {get_resource: {{role}}}
471 description: IP address of the server in the external network
472 value: {get_attr: [ExternalPort, ip_address]}
473 internal_api_ip_address:
474 description: IP address of the server in the internal_api network
475 value: {get_attr: [InternalApiPort, ip_address]}
477 description: IP address of the server in the storage network
478 value: {get_attr: [StoragePort, ip_address]}
479 storage_mgmt_ip_address:
480 description: IP address of the server in the storage_mgmt network
481 value: {get_attr: [StorageMgmtPort, ip_address]}
483 description: IP address of the server in the tenant network
484 value: {get_attr: [TenantPort, ip_address]}
485 management_ip_address:
486 description: IP address of the server in the management network
487 value: {get_attr: [ManagementPort, ip_address]}