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.
86 {{role}}ServerMetadata:
89 Extra properties or metadata passed to Nova for the created nodes in
90 the overcloud. It's accessible via the Nova metadata API. This option is
91 role-specific and is merged with the values given to the ServerMetadata
97 Extra properties or metadata passed to Nova for the created nodes in
98 the overcloud. It's accessible via the Nova metadata API. This applies to
99 all roles and is merged with a role-specific metadata parameter.
101 {{role}}SchedulerHints:
103 description: Optional scheduler hints to pass to nova
108 ServiceConfigSettings:
112 type: comma_delimited_list
114 MonitoringSubscriptions:
115 type: comma_delimited_list
119 description: Command which will be run whenever configuration data changes
120 default: os-refresh-config --timeout 14400
125 type: comma_delimited_list
130 type: OS::TripleO::Server
133 command: {get_param: ConfigCommand}
135 image: {get_param: {{role}}Image}
136 image_update_policy: {get_param: ImageUpdatePolicy}
137 flavor: {get_param: Overcloud{{role}}Flavor}
138 key_name: {get_param: KeyName}
141 user_data_format: SOFTWARE_CONFIG
142 user_data: {get_resource: UserData}
145 template: {get_param: Hostname}
146 params: {get_param: HostnameMap}
147 software_config_transport: {get_param: SoftwareConfigTransport}
150 - {get_param: ServerMetadata}
151 - {get_param: {{role}}ServerMetadata}
152 scheduler_hints: {get_param: {{role}}SchedulerHints}
154 # Combine the NodeAdminUserData and NodeUserData mime archives
156 type: OS::Heat::MultipartMime
159 - config: {get_resource: NodeAdminUserData}
161 - config: {get_resource: NodeUserData}
164 # Creates the "heat-admin" user if configured via the environment
165 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
167 type: OS::TripleO::NodeAdminUserData
169 # For optional operator additional userdata
170 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
172 type: OS::TripleO::NodeUserData
175 type: OS::TripleO::{{role}}::Ports::ExternalPort
177 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
178 IPPool: {get_param: {{role}}IPs}
179 NodeIndex: {get_param: NodeIndex}
182 type: OS::TripleO::{{role}}::Ports::InternalApiPort
184 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
185 IPPool: {get_param: {{role}}IPs}
186 NodeIndex: {get_param: NodeIndex}
189 type: OS::TripleO::{{role}}::Ports::StoragePort
191 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
192 IPPool: {get_param: {{role}}IPs}
193 NodeIndex: {get_param: NodeIndex}
196 type: OS::TripleO::{{role}}::Ports::StorageMgmtPort
198 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
199 IPPool: {get_param: {{role}}IPs}
200 NodeIndex: {get_param: NodeIndex}
203 type: OS::TripleO::{{role}}::Ports::TenantPort
205 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
206 IPPool: {get_param: {{role}}IPs}
207 NodeIndex: {get_param: NodeIndex}
210 type: OS::TripleO::{{role}}::Ports::ManagementPort
212 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
213 IPPool: {get_param: {{role}}IPs}
214 NodeIndex: {get_param: NodeIndex}
217 type: OS::TripleO::{{role}}::Net::SoftwareConfig
219 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
220 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
221 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
222 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
223 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
224 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
225 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
228 type: OS::TripleO::Network::Ports::NetIpMap
230 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
231 ExternalIp: {get_attr: [ExternalPort, ip_address]}
232 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
233 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
234 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
235 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
236 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
237 StorageIp: {get_attr: [StoragePort, ip_address]}
238 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
239 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
240 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
241 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
242 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
243 TenantIp: {get_attr: [TenantPort, ip_address]}
244 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
245 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
246 ManagementIp: {get_attr: [ManagementPort, ip_address]}
247 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
248 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
251 type: OS::Heat::Value
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]}
331 - - {get_attr: [{{role}}, name]}
333 - {get_param: CloudDomain}
337 - - {get_attr: [{{role}}, name]}
341 type: OS::TripleO::SoftwareDeployment
343 name: NetworkDeployment
344 config: {get_resource: NetworkConfig}
345 server: {get_resource: {{role}}}
346 actions: {get_param: NetworkDeploymentActions}
349 type: OS::Heat::StructuredDeployment
350 depends_on: NetworkDeployment
352 name: {{role}}Deployment
353 config: {get_resource: {{role}}Config}
354 server: {get_resource: {{role}}}
356 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
359 type: OS::Heat::StructuredConfig
365 - heat_config_%{::deploy_config_name}
366 - {{role.lower()}}_extraconfig
371 - bootstrap_node # provided by allNodesConfig
372 - all_nodes # provided by allNodesConfig
373 - vip_data # provided by allNodesConfig
375 merge_behavior: deeper
378 service_names: {get_param: ServiceNames}
379 sensu::subscriptions: {get_param: MonitoringSubscriptions}
382 - {get_param: ServiceConfigSettings}
383 - values: {get_attr: [NetIpMap, net_ip_map]}
384 {{role.lower()}}_extraconfig: {get_param: {{role}}ExtraConfig}
385 extraconfig: {get_param: ExtraConfig}
387 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
388 tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
389 tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
390 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
391 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
392 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
393 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
394 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
395 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
397 # Resource for site-specific injection of root certificate
399 depends_on: {{role}}Deployment
400 type: OS::TripleO::NodeTLSCAData
402 server: {get_resource: {{role}}}
404 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
405 {{role}}ExtraConfigPre:
406 depends_on: {{role}}Deployment
407 type: OS::TripleO::{{role}}ExtraConfigPre
409 server: {get_resource: {{role}}}
411 # Hook for site-specific additional pre-deployment config,
412 # applying to all nodes, e.g node registration/unregistration
414 depends_on: [{{role}}ExtraConfigPre, NodeTLSCAData]
415 type: OS::TripleO::NodeExtraConfig
417 server: {get_resource: {{role}}}
420 type: OS::TripleO::Tasks::PackageUpdate
423 type: OS::Heat::SoftwareDeployment
425 config: {get_resource: UpdateConfig}
426 server: {get_resource: {{role}}}
429 get_param: UpdateIdentifier
433 description: IP address of the server in the ctlplane network
434 value: {get_attr: [{{role}}, networks, ctlplane, 0]}
436 description: Hostname of the server
437 value: {get_attr: [{{role}}, name]}
439 description: Mapping of network names to hostnames
441 external: {get_attr: [NetHostMap, value, external, fqdn]}
442 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
443 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
444 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
445 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
446 management: {get_attr: [NetHostMap, value, management, fqdn]}
447 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
452 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
453 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
454 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
455 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
456 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
457 TENANTIP TENANTHOST.DOMAIN TENANTHOST
458 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
459 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
461 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
462 DOMAIN: {get_param: CloudDomain}
463 PRIMARYHOST: {get_attr: [{{role}}, name]}
464 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
465 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
466 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
467 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
468 STORAGEIP: {get_attr: [StoragePort, ip_address]}
469 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
470 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
471 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
472 TENANTIP: {get_attr: [TenantPort, ip_address]}
473 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
474 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
475 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
476 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
477 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
478 nova_server_resource:
479 description: Heat resource handle for {{role}} server
481 {get_resource: {{role}}}
483 description: IP address of the server in the external network
484 value: {get_attr: [ExternalPort, ip_address]}
485 internal_api_ip_address:
486 description: IP address of the server in the internal_api network
487 value: {get_attr: [InternalApiPort, ip_address]}
489 description: IP address of the server in the storage network
490 value: {get_attr: [StoragePort, ip_address]}
491 storage_mgmt_ip_address:
492 description: IP address of the server in the storage_mgmt network
493 value: {get_attr: [StorageMgmtPort, ip_address]}
495 description: IP address of the server in the tenant network
496 value: {get_attr: [TenantPort, ip_address]}
497 management_ip_address:
498 description: IP address of the server in the management network
499 value: {get_attr: [ManagementPort, ip_address]}