1 heat_template_version: pike
2 description: 'OpenStack swift storage node configured by Puppet'
4 OvercloudSwiftStorageFlavor:
5 description: Flavor for Swift storage nodes to request when deploying.
9 - custom_constraint: nova.flavor
11 default: overcloud-full
14 - custom_constraint: glance.image
17 description: Name of an existing Nova key pair to enable SSH access to the instances
23 Setting to a previously unused value during stack-update will trigger
24 package update on all nodes
27 description: Mapping of service_name -> network name. Typically set
28 via parameter_defaults in the resource registry.
32 description: Mapping of service endpoint -> protocol. Typically set
33 via parameter_defaults in the resource registry.
37 default: '' # Defaults to Heat created hostname
41 description: Optional mapping to override hostnames
45 Additional hiera configuration to inject into the cluster. Note
46 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
48 ObjectStorageExtraConfig:
51 Role specific additional hiera configuration to inject into the cluster.
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 SwiftStorageServerMetadata:
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 ObjectStorageSchedulerHints:
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
146 DeploymentSwiftDataMap:
149 Map of servers to Swift container and object for storing deployment data.
150 The keys are the Heat assigned hostnames, and the value is a map of the
151 container/object name in Swift. Example value:
152 overcloud-controller-0:
153 container: overcloud-controller
155 overcloud-controller-1:
156 container: overcloud-controller
158 overcloud-controller-2:
159 container: overcloud-controller
161 overcloud-novacompute-0:
162 container: overcloud-compute
167 server_not_blacklisted:
170 - {get_param: [DeploymentServerBlacklistDict, {get_param: Hostname}]}
172 deployment_swift_data_map_unset:
175 - DeploymentSwiftDataMap
176 - {get_param: Hostname}
182 type: OS::TripleO::ObjectStorageServer
185 command: {get_param: ConfigCommand}
186 splay: {get_param: ConfigCollectSplay}
188 image: {get_param: SwiftStorageImage}
189 flavor: {get_param: OvercloudSwiftStorageFlavor}
190 key_name: {get_param: KeyName}
193 user_data_format: SOFTWARE_CONFIG
194 user_data: {get_resource: UserData}
197 template: {get_param: Hostname}
198 params: {get_param: HostnameMap}
199 software_config_transport: {get_param: SoftwareConfigTransport}
202 - {get_param: ServerMetadata}
203 - {get_param: SwiftStorageServerMetadata}
204 - {get_param: ServiceMetadataSettings}
205 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
206 deployment_swift_data:
208 - deployment_swift_data_map_unset
210 - {get_param: [DeploymentSwiftDataMap,
211 {get_param: Hostname}]}
213 # Combine the NodeAdminUserData and NodeUserData mime archives
215 type: OS::Heat::MultipartMime
218 - config: {get_resource: NodeAdminUserData}
220 - config: {get_resource: NodeUserData}
222 - config: {get_resource: RoleUserData}
225 # Creates the "heat-admin" user if configured via the environment
226 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
228 type: OS::TripleO::NodeAdminUserData
230 # For optional operator additional userdata
231 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
233 type: OS::TripleO::NodeUserData
235 # For optional operator role-specific userdata
236 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
238 type: OS::TripleO::ObjectStorage::NodeUserData
241 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
243 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
244 IPPool: {get_param: SwiftStorageIPs}
245 NodeIndex: {get_param: NodeIndex}
248 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
250 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
251 IPPool: {get_param: SwiftStorageIPs}
252 NodeIndex: {get_param: NodeIndex}
255 type: OS::TripleO::SwiftStorage::Ports::StoragePort
257 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
258 IPPool: {get_param: SwiftStorageIPs}
259 NodeIndex: {get_param: NodeIndex}
262 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
264 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
265 IPPool: {get_param: SwiftStorageIPs}
266 NodeIndex: {get_param: NodeIndex}
269 type: OS::TripleO::SwiftStorage::Ports::TenantPort
271 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
272 IPPool: {get_param: SwiftStorageIPs}
273 NodeIndex: {get_param: NodeIndex}
276 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
278 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
279 IPPool: {get_param: SwiftStorageIPs}
280 NodeIndex: {get_param: NodeIndex}
283 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
285 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
286 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
287 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
288 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
289 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
290 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
291 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
294 type: OS::TripleO::Network::Ports::NetIpMap
296 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
297 ExternalIp: {get_attr: [ExternalPort, ip_address]}
298 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
299 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
300 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
301 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
302 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
303 StorageIp: {get_attr: [StoragePort, ip_address]}
304 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
305 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
306 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
307 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
308 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
309 TenantIp: {get_attr: [TenantPort, ip_address]}
310 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
311 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
312 ManagementIp: {get_attr: [ManagementPort, ip_address]}
313 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
314 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
317 type: OS::Heat::Value
325 - - {get_attr: [SwiftStorage, name]}
327 - {get_param: CloudDomain}
331 - - {get_attr: [SwiftStorage, name]}
337 - - {get_attr: [SwiftStorage, name]}
339 - {get_param: CloudDomain}
343 - - {get_attr: [SwiftStorage, name]}
349 - - {get_attr: [SwiftStorage, name]}
351 - {get_param: CloudDomain}
355 - - {get_attr: [SwiftStorage, name]}
361 - - {get_attr: [SwiftStorage, name]}
363 - {get_param: CloudDomain}
367 - - {get_attr: [SwiftStorage, name]}
373 - - {get_attr: [SwiftStorage, name]}
375 - {get_param: CloudDomain}
379 - - {get_attr: [SwiftStorage, name]}
385 - - {get_attr: [SwiftStorage, name]}
387 - {get_param: CloudDomain}
391 - - {get_attr: [SwiftStorage, name]}
397 - - {get_attr: [SwiftStorage, name]}
399 - {get_param: CloudDomain}
403 - - {get_attr: [SwiftStorage, name]}
407 type: OS::TripleO::ObjectStorage::PreNetworkConfig
409 server: {get_resource: SwiftStorage}
410 RoleParameters: {get_param: RoleParameters}
411 ServiceNames: {get_param: ServiceNames}
414 type: OS::TripleO::SoftwareDeployment
415 depends_on: PreNetworkConfig
417 name: NetworkDeployment
418 config: {get_resource: NetworkConfig}
419 server: {get_resource: SwiftStorage}
422 - server_not_blacklisted
423 - {get_param: NetworkDeploymentActions}
427 SwiftStorageUpgradeInitConfig:
428 type: OS::Heat::SoftwareConfig
434 - - "#!/bin/bash\n\n"
435 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
436 - get_param: UpgradeInitCommand
437 - get_param: UpgradeInitCommonCommand
439 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
440 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
441 SwiftStorageUpgradeInitDeployment:
442 type: OS::Heat::SoftwareDeployment
443 depends_on: NetworkDeployment
445 name: SwiftStorageUpgradeInitDeployment
446 server: {get_resource: SwiftStorage}
447 config: {get_resource: SwiftStorageUpgradeInitConfig}
450 - server_not_blacklisted
451 - ['CREATE', 'UPDATE']
454 SwiftStorageHieraConfig:
455 type: OS::Heat::StructuredConfig
461 - heat_config_%{::deploy_config_name}
468 - bootstrap_node # provided by allNodesConfig
469 - all_nodes # provided by allNodesConfig
470 - vip_data # provided by allNodesConfig
472 merge_behavior: deeper
475 service_names: {get_param: ServiceNames}
476 sensu::subscriptions: {get_param: MonitoringSubscriptions}
479 - {get_param: ServiceConfigSettings}
480 - values: {get_attr: [NetIpMap, net_ip_map]}
481 object_extraconfig: {get_param: ObjectStorageExtraConfig}
482 extraconfig: {get_param: ExtraConfig}
484 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
485 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
486 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
487 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
488 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
489 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
490 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
491 fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
493 SwiftStorageHieraDeploy:
494 type: OS::Heat::StructuredDeployment
495 depends_on: SwiftStorageUpgradeInitDeployment
497 name: SwiftStorageHieraDeploy
498 server: {get_resource: SwiftStorage}
499 config: {get_resource: SwiftStorageHieraConfig}
501 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
504 - server_not_blacklisted
505 - ['CREATE', 'UPDATE']
508 # Resource for site-specific injection of root certificate
510 depends_on: SwiftStorageHieraDeploy
511 type: OS::TripleO::NodeTLSCAData
513 server: {get_resource: SwiftStorage}
515 # Hook for site-specific additional pre-deployment config,
516 # applying to all nodes, e.g node registration/unregistration
518 depends_on: NodeTLSCAData
519 type: OS::TripleO::NodeExtraConfig
521 server: {get_resource: SwiftStorage}
524 type: OS::TripleO::Tasks::PackageUpdate
527 type: OS::Heat::SoftwareDeployment
528 depends_on: NetworkDeployment
530 config: {get_resource: UpdateConfig}
531 server: {get_resource: SwiftStorage}
534 get_param: UpdateIdentifier
537 - server_not_blacklisted
538 - ['CREATE', 'UPDATE']
542 type: OS::TripleO::Ssh::HostPubKey
543 depends_on: SwiftStorageHieraDeploy
545 server: {get_resource: SwiftStorage}
549 description: IP address of the server in the ctlplane network
550 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
552 description: Hostname of the server
553 value: {get_attr: [SwiftStorage, 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, ObjectStorageHostnameResolveNetwork]}]}
578 DOMAIN: {get_param: CloudDomain}
579 PRIMARYHOST: {get_attr: [SwiftStorage, 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: [SwiftStorage, 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, ObjectStorageHostnameResolveNetwork]}]}
608 DOMAIN: {get_param: CloudDomain}
609 PRIMARYHOST: {get_attr: [SwiftStorage, 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: [SwiftStorage, 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 swift storage server
628 {get_resource: SwiftStorage}
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]}
648 deployed_server_port_map:
650 Map of Heat created hostname of the server to ip address. This is the
651 hostname before it has been mapped with the HostnameMap parameter, and
652 the IP address from the ctlplane network. This map can be used to construct
653 the DeployedServerPortMap parameter when using split-stack.
658 - ip_address: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
663 - - {get_param: Hostname}
665 deployed_server_deployment_swift_data_map:
667 Map of Heat created hostname of the server to the Swift container and object
668 used to created the temporary url for metadata polling with
676 - {get_attr: [SwiftStorage, os_collect_config, request, metadata_url]}
683 - {get_attr: [SwiftStorage, os_collect_config, request, metadata_url]}
686 - keys: {hostname: {get_param: Hostname}}
688 description: The os-collect-config configuration associated with this server resource
689 value: {get_attr: [SwiftStorage, os_collect_config]}