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::{{role}}::PreNetworkConfig
331 server: {get_resource: {{role}}}}
334 type: OS::TripleO::SoftwareDeployment
335 depends_on: PreNetworkConfig
337 name: NetworkDeployment
338 config: {get_resource: NetworkConfig}
339 server: {get_resource: {{role}}}
340 actions: {get_param: NetworkDeploymentActions}
343 type: OS::Heat::StructuredDeployment
344 depends_on: NetworkDeployment
346 name: {{role}}Deployment
347 config: {get_resource: {{role}}Config}
348 server: {get_resource: {{role}}}
350 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
353 type: OS::Heat::StructuredConfig
359 - heat_config_%{::deploy_config_name}
360 - {{role.lower()}}_extraconfig
365 - bootstrap_node # provided by allNodesConfig
366 - all_nodes # provided by allNodesConfig
367 - vip_data # provided by allNodesConfig
369 merge_behavior: deeper
372 service_names: {get_param: ServiceNames}
373 sensu::subscriptions: {get_param: MonitoringSubscriptions}
376 - {get_param: ServiceConfigSettings}
377 - values: {get_attr: [NetIpMap, net_ip_map]}
378 {{role.lower()}}_extraconfig: {get_param: {{role}}ExtraConfig}
379 extraconfig: {get_param: ExtraConfig}
381 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
382 tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
383 tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
384 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
385 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
386 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
387 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
388 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
389 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
391 # Resource for site-specific injection of root certificate
393 depends_on: {{role}}Deployment
394 type: OS::TripleO::NodeTLSCAData
396 server: {get_resource: {{role}}}
398 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
399 {{role}}ExtraConfigPre:
400 depends_on: {{role}}Deployment
401 type: OS::TripleO::{{role}}ExtraConfigPre
403 server: {get_resource: {{role}}}
405 # Hook for site-specific additional pre-deployment config,
406 # applying to all nodes, e.g node registration/unregistration
408 depends_on: [{{role}}ExtraConfigPre, NodeTLSCAData]
409 type: OS::TripleO::NodeExtraConfig
411 server: {get_resource: {{role}}}
414 type: OS::TripleO::Tasks::PackageUpdate
417 type: OS::Heat::SoftwareDeployment
419 config: {get_resource: UpdateConfig}
420 server: {get_resource: {{role}}}
423 get_param: UpdateIdentifier
427 description: IP address of the server in the ctlplane network
428 value: {get_attr: [{{role}}, networks, ctlplane, 0]}
430 description: Hostname of the server
431 value: {get_attr: [{{role}}, name]}
433 description: Mapping of network names to hostnames
435 external: {get_attr: [NetHostMap, value, external, fqdn]}
436 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
437 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
438 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
439 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
440 management: {get_attr: [NetHostMap, value, management, fqdn]}
441 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
446 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
447 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
448 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
449 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
450 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
451 TENANTIP TENANTHOST.DOMAIN TENANTHOST
452 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
453 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
455 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
456 DOMAIN: {get_param: CloudDomain}
457 PRIMARYHOST: {get_attr: [{{role}}, name]}
458 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
459 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
460 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
461 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
462 STORAGEIP: {get_attr: [StoragePort, ip_address]}
463 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
464 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
465 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
466 TENANTIP: {get_attr: [TenantPort, ip_address]}
467 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
468 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
469 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
470 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
471 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
472 nova_server_resource:
473 description: Heat resource handle for {{role}} server
475 {get_resource: {{role}}}
477 description: IP address of the server in the external network
478 value: {get_attr: [ExternalPort, ip_address]}
479 internal_api_ip_address:
480 description: IP address of the server in the internal_api network
481 value: {get_attr: [InternalApiPort, ip_address]}
483 description: IP address of the server in the storage network
484 value: {get_attr: [StoragePort, ip_address]}
485 storage_mgmt_ip_address:
486 description: IP address of the server in the storage_mgmt network
487 value: {get_attr: [StorageMgmtPort, ip_address]}
489 description: IP address of the server in the tenant network
490 value: {get_attr: [TenantPort, ip_address]}
491 management_ip_address:
492 description: IP address of the server in the management network
493 value: {get_attr: [ManagementPort, ip_address]}