1 heat_template_version: pike
2 description: 'OpenStack cinder storage configured by Puppet'
5 default: overcloud-full
8 - custom_constraint: glance.image
12 Additional hiera configuration to inject into the cluster. Note
13 that BlockStorageExtraConfig takes precedence over ExtraConfig.
15 BlockStorageExtraConfig:
18 Role specific additional hiera configuration to inject into the cluster.
23 OvercloudBlockStorageFlavor:
24 description: Flavor for block storage nodes to request when deploying.
28 - custom_constraint: nova.flavor
31 description: Name of an existing Nova key pair to enable SSH access to the instances
37 Setting to a previously unused value during stack-update will trigger
38 package update on all nodes
41 default: '' # Defaults to Heat created hostname
45 description: Optional mapping to override hostnames
48 description: Mapping of service_name -> network name. Typically set
49 via parameter_defaults in the resource registry.
53 description: Mapping of service endpoint -> protocol. Typically set
54 via parameter_defaults in the resource registry.
56 NetworkDeploymentActions:
57 type: comma_delimited_list
59 Heat action when to apply network configuration changes
61 SoftwareConfigTransport:
62 default: POLL_SERVER_CFN
64 How the server should receive the metadata required for software configuration.
67 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
69 default: 'localdomain'
72 The DNS domain used for the hosts. This must match the
73 overcloud_domain_name configured on the undercloud.
74 BlockStorageServerMetadata:
77 Extra properties or metadata passed to Nova for the created nodes in
78 the overcloud. It's accessible via the Nova metadata API. This option is
79 role-specific and is merged with the values given to the ServerMetadata
85 Extra properties or metadata passed to Nova for the created nodes in
86 the overcloud. It's accessible via the Nova metadata API. This applies to
87 all roles and is merged with a role-specific metadata parameter.
89 BlockStorageSchedulerHints:
91 description: Optional scheduler hints to pass to nova
96 ServiceConfigSettings:
100 type: comma_delimited_list
102 MonitoringSubscriptions:
103 type: comma_delimited_list
105 ServiceMetadataSettings:
110 description: Command which will be run whenever configuration data changes
111 default: os-refresh-config --timeout 14400
116 Maximum amount of time to possibly to delay configuation collection
117 polling. Defaults to 30 seconds. Set to 0 to disable it which will cause
118 the configuration collection to occur as soon as the collection process
119 starts. This setting is used to prevent the configuration collection
120 processes from polling all at the exact same time.
124 Command or script snippet to run on all overcloud nodes to
125 initialize the upgrade process. E.g. a repository switch.
127 UpgradeInitCommonCommand:
130 Common commands required by the upgrades process. This should not
131 normally be modified by the operator and is set and unset in the
132 major-upgrade-composable-steps.yaml and major-upgrade-converge.yaml
135 DeploymentServerBlacklistDict:
139 Map of server hostnames to blacklist from any triggered
140 deployments. If the value is 1, the server will be blacklisted. This
141 parameter is generated from the parent template.
144 description: Role Specific Parameters
145 DeploymentSwiftDataMap:
148 Map of servers to Swift container and object for storing deployment data.
149 The keys are the Heat assigned hostnames, and the value is a map of the
150 container/object name in Swift. Example value:
151 overcloud-controller-0:
152 container: overcloud-controller
154 overcloud-controller-1:
155 container: overcloud-controller
157 overcloud-controller-2:
158 container: overcloud-controller
160 overcloud-novacompute-0:
161 container: overcloud-compute
166 server_not_blacklisted:
169 - {get_param: [DeploymentServerBlacklistDict, {get_param: Hostname}]}
171 deployment_swift_data_map_unset:
174 - DeploymentSwiftDataMap
175 - {get_param: Hostname}
180 type: OS::TripleO::BlockStorageServer
183 command: {get_param: ConfigCommand}
184 splay: {get_param: ConfigCollectSplay}
187 {get_param: BlockStorageImage}
188 flavor: {get_param: OvercloudBlockStorageFlavor}
189 key_name: {get_param: KeyName}
192 user_data_format: SOFTWARE_CONFIG
193 user_data: {get_resource: UserData}
196 template: {get_param: Hostname}
197 params: {get_param: HostnameMap}
198 software_config_transport: {get_param: SoftwareConfigTransport}
201 - {get_param: ServerMetadata}
202 - {get_param: BlockStorageServerMetadata}
203 - {get_param: ServiceMetadataSettings}
204 scheduler_hints: {get_param: BlockStorageSchedulerHints}
205 deployment_swift_data:
207 - deployment_swift_data_map_unset
209 - {get_param: [DeploymentSwiftDataMap,
210 {get_param: Hostname}]}
212 # Combine the NodeAdminUserData and NodeUserData mime archives
214 type: OS::Heat::MultipartMime
217 - config: {get_resource: NodeAdminUserData}
219 - config: {get_resource: NodeUserData}
221 - config: {get_resource: RoleUserData}
224 # Creates the "heat-admin" user if configured via the environment
225 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
227 type: OS::TripleO::NodeAdminUserData
229 # For optional operator additional userdata
230 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
232 type: OS::TripleO::NodeUserData
234 # For optional operator role-specific userdata
235 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
237 type: OS::TripleO::BlockStorage::NodeUserData
240 type: OS::TripleO::BlockStorage::Ports::ExternalPort
242 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
243 IPPool: {get_param: BlockStorageIPs}
244 NodeIndex: {get_param: NodeIndex}
247 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
249 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
250 IPPool: {get_param: BlockStorageIPs}
251 NodeIndex: {get_param: NodeIndex}
254 type: OS::TripleO::BlockStorage::Ports::StoragePort
256 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
257 IPPool: {get_param: BlockStorageIPs}
258 NodeIndex: {get_param: NodeIndex}
261 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
263 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
264 IPPool: {get_param: BlockStorageIPs}
265 NodeIndex: {get_param: NodeIndex}
268 type: OS::TripleO::BlockStorage::Ports::TenantPort
270 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
271 IPPool: {get_param: BlockStorageIPs}
272 NodeIndex: {get_param: NodeIndex}
275 type: OS::TripleO::BlockStorage::Ports::ManagementPort
277 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
278 IPPool: {get_param: BlockStorageIPs}
279 NodeIndex: {get_param: NodeIndex}
282 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
284 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
285 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
286 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
287 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
288 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
289 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
290 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
293 type: OS::TripleO::Network::Ports::NetIpMap
295 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
296 ExternalIp: {get_attr: [ExternalPort, ip_address]}
297 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
298 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
299 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
300 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
301 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
302 StorageIp: {get_attr: [StoragePort, ip_address]}
303 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
304 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
305 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
306 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
307 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
308 TenantIp: {get_attr: [TenantPort, ip_address]}
309 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
310 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
311 ManagementIp: {get_attr: [ManagementPort, ip_address]}
312 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
313 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
316 type: OS::Heat::Value
324 - - {get_attr: [BlockStorage, name]}
326 - {get_param: CloudDomain}
330 - - {get_attr: [BlockStorage, name]}
336 - - {get_attr: [BlockStorage, name]}
338 - {get_param: CloudDomain}
342 - - {get_attr: [BlockStorage, name]}
348 - - {get_attr: [BlockStorage, name]}
350 - {get_param: CloudDomain}
354 - - {get_attr: [BlockStorage, name]}
360 - - {get_attr: [BlockStorage, name]}
362 - {get_param: CloudDomain}
366 - - {get_attr: [BlockStorage, name]}
372 - - {get_attr: [BlockStorage, name]}
374 - {get_param: CloudDomain}
378 - - {get_attr: [BlockStorage, name]}
384 - - {get_attr: [BlockStorage, name]}
386 - {get_param: CloudDomain}
390 - - {get_attr: [BlockStorage, name]}
396 - - {get_attr: [BlockStorage, name]}
398 - {get_param: CloudDomain}
402 - - {get_attr: [BlockStorage, name]}
406 type: OS::TripleO::BlockStorage::PreNetworkConfig
408 server: {get_resource: BlockStorage}
409 RoleParameters: {get_param: RoleParameters}
410 ServiceNames: {get_param: ServiceNames}
413 type: OS::TripleO::SoftwareDeployment
414 depends_on: PreNetworkConfig
416 name: NetworkDeployment
417 config: {get_resource: NetworkConfig}
418 server: {get_resource: BlockStorage}
421 - server_not_blacklisted
422 - {get_param: NetworkDeploymentActions}
425 BlockStorageUpgradeInitConfig:
426 type: OS::Heat::SoftwareConfig
432 - - "#!/bin/bash\n\n"
433 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
434 - get_param: UpgradeInitCommand
435 - get_param: UpgradeInitCommonCommand
437 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
438 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
439 BlockStorageUpgradeInitDeployment:
440 type: OS::Heat::SoftwareDeployment
441 depends_on: NetworkDeployment
443 name: BlockStorageUpgradeInitDeployment
444 server: {get_resource: BlockStorage}
445 config: {get_resource: BlockStorageUpgradeInitConfig}
448 - server_not_blacklisted
449 - ['CREATE', 'UPDATE']
452 BlockStorageDeployment:
453 type: OS::Heat::StructuredDeployment
454 depends_on: BlockStorageUpgradeInitDeployment
456 name: BlockStorageDeployment
457 server: {get_resource: BlockStorage}
458 config: {get_resource: BlockStorageConfig}
460 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
463 - server_not_blacklisted
464 - ['CREATE', 'UPDATE']
467 # Map heat metadata into hiera datafiles
469 type: OS::Heat::StructuredConfig
475 - heat_config_%{::deploy_config_name}
482 - bootstrap_node # provided by allNodesConfig
483 - all_nodes # provided by allNodesConfig
484 - vip_data # provided by allNodesConfig
486 merge_behavior: deeper
489 service_names: {get_param: ServiceNames}
490 sensu::subscriptions: {get_param: MonitoringSubscriptions}
493 - {get_param: ServiceConfigSettings}
494 - values: {get_attr: [NetIpMap, net_ip_map]}
495 volume_extraconfig: {get_param: BlockStorageExtraConfig}
496 extraconfig: {get_param: ExtraConfig}
498 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
499 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
500 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
501 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
502 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
503 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
504 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
505 fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
507 # Resource for site-specific injection of root certificate
509 depends_on: BlockStorageDeployment
510 type: OS::TripleO::NodeTLSCAData
512 server: {get_resource: BlockStorage}
514 # Hook for site-specific additional pre-deployment config,
515 # applying to all nodes, e.g node registration/unregistration
517 depends_on: NodeTLSCAData
518 type: OS::TripleO::NodeExtraConfig
520 server: {get_resource: BlockStorage}
523 type: OS::TripleO::Tasks::PackageUpdate
526 type: OS::Heat::SoftwareDeployment
527 depends_on: NetworkDeployment
529 name: UpdateDeployment
530 config: {get_resource: UpdateConfig}
531 server: {get_resource: BlockStorage}
534 get_param: UpdateIdentifier
537 - server_not_blacklisted
538 - ['CREATE', 'UPDATE']
542 type: OS::TripleO::Ssh::HostPubKey
543 depends_on: BlockStorageDeployment
545 server: {get_resource: BlockStorage}
549 description: IP address of the server in the ctlplane network
550 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
552 description: Hostname of the server
553 value: {get_attr: [BlockStorage, name]}
555 description: Mapping of network names to hostnames
557 external: {get_attr: [NetHostMap, value, external, fqdn]}
558 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
559 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
560 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
561 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
562 management: {get_attr: [NetHostMap, value, management, fqdn]}
563 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
568 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
569 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
570 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
571 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
572 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
573 TENANTIP TENANTHOST.DOMAIN TENANTHOST
574 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
575 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
577 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
578 DOMAIN: {get_param: CloudDomain}
579 PRIMARYHOST: {get_attr: [BlockStorage, name]}
580 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
581 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
582 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
583 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
584 STORAGEIP: {get_attr: [StoragePort, ip_address]}
585 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
586 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
587 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
588 TENANTIP: {get_attr: [TenantPort, ip_address]}
589 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
590 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
591 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
592 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
593 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
595 description: Entry for ssh known hosts
598 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
599 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
600 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
601 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
602 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
603 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
604 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
605 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
607 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
608 DOMAIN: {get_param: CloudDomain}
609 PRIMARYHOST: {get_attr: [BlockStorage, name]}
610 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
611 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
612 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
613 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
614 STORAGEIP: {get_attr: [StoragePort, ip_address]}
615 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
616 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
617 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
618 TENANTIP: {get_attr: [TenantPort, ip_address]}
619 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
620 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
621 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
622 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
623 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
624 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
625 nova_server_resource:
626 description: Heat resource handle for the block storage server
628 {get_resource: BlockStorage}
629 condition: server_not_blacklisted
631 description: IP address of the server in the external network
632 value: {get_attr: [ExternalPort, ip_address]}
633 internal_api_ip_address:
634 description: IP address of the server in the internal_api network
635 value: {get_attr: [InternalApiPort, ip_address]}
637 description: IP address of the server in the storage network
638 value: {get_attr: [StoragePort, ip_address]}
639 storage_mgmt_ip_address:
640 description: IP address of the server in the storage_mgmt network
641 value: {get_attr: [StorageMgmtPort, ip_address]}
643 description: IP address of the server in the tenant network
644 value: {get_attr: [TenantPort, ip_address]}
645 management_ip_address:
646 description: IP address of the server in the management network
647 value: {get_attr: [ManagementPort, ip_address]}
649 description: The os-collect-config configuration associated with this server resource
650 value: {get_attr: [BlockStorage, os_collect_config]}