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}
412 deployment_actions: {get_attr: [DeploymentActions, value]}
415 type: OS::TripleO::SoftwareDeployment
416 depends_on: PreNetworkConfig
418 name: NetworkDeployment
419 config: {get_resource: NetworkConfig}
420 server: {get_resource: SwiftStorage}
423 - server_not_blacklisted
424 - {get_param: NetworkDeploymentActions}
428 SwiftStorageUpgradeInitConfig:
429 type: OS::Heat::SoftwareConfig
435 - - "#!/bin/bash\n\n"
436 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
437 - get_param: UpgradeInitCommand
438 - get_param: UpgradeInitCommonCommand
440 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
441 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
442 SwiftStorageUpgradeInitDeployment:
443 type: OS::Heat::SoftwareDeployment
444 depends_on: NetworkDeployment
446 name: SwiftStorageUpgradeInitDeployment
447 server: {get_resource: SwiftStorage}
448 config: {get_resource: SwiftStorageUpgradeInitConfig}
451 - server_not_blacklisted
452 - ['CREATE', 'UPDATE']
455 SwiftStorageHieraConfig:
456 type: OS::Heat::StructuredConfig
462 - heat_config_%{::deploy_config_name}
469 - bootstrap_node # provided by allNodesConfig
470 - all_nodes # provided by allNodesConfig
471 - vip_data # provided by allNodesConfig
473 merge_behavior: deeper
476 service_names: {get_param: ServiceNames}
477 sensu::subscriptions: {get_param: MonitoringSubscriptions}
480 - {get_param: ServiceConfigSettings}
481 - values: {get_attr: [NetIpMap, net_ip_map]}
482 object_extraconfig: {get_param: ObjectStorageExtraConfig}
483 extraconfig: {get_param: ExtraConfig}
485 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
486 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
487 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
488 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
489 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
490 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
491 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
492 fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
494 SwiftStorageHieraDeploy:
495 type: OS::Heat::StructuredDeployment
496 depends_on: SwiftStorageUpgradeInitDeployment
498 name: SwiftStorageHieraDeploy
499 server: {get_resource: SwiftStorage}
500 config: {get_resource: SwiftStorageHieraConfig}
502 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
505 - server_not_blacklisted
506 - ['CREATE', 'UPDATE']
509 # Resource for site-specific injection of root certificate
511 depends_on: SwiftStorageHieraDeploy
512 type: OS::TripleO::NodeTLSCAData
514 server: {get_resource: SwiftStorage}
516 # Hook for site-specific additional pre-deployment config,
517 # applying to all nodes, e.g node registration/unregistration
519 depends_on: NodeTLSCAData
520 type: OS::TripleO::NodeExtraConfig
521 # We have to use conditions here so that we don't break backwards
522 # compatibility with templates everywhere
523 condition: server_not_blacklisted
525 server: {get_resource: SwiftStorage}
528 type: OS::TripleO::Tasks::PackageUpdate
531 type: OS::Heat::SoftwareDeployment
532 depends_on: NetworkDeployment
534 config: {get_resource: UpdateConfig}
535 server: {get_resource: SwiftStorage}
538 get_param: UpdateIdentifier
541 - server_not_blacklisted
542 - ['CREATE', 'UPDATE']
546 type: OS::Heat::Value
550 - server_not_blacklisted
551 - ['CREATE', 'UPDATE']
555 type: OS::TripleO::Ssh::HostPubKey
556 depends_on: SwiftStorageHieraDeploy
558 server: {get_resource: SwiftStorage}
559 deployment_actions: {get_attr: [DeploymentActions, value]}
563 description: IP address of the server in the ctlplane network
564 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
566 description: Hostname of the server
567 value: {get_attr: [SwiftStorage, name]}
569 description: Mapping of network names to hostnames
571 external: {get_attr: [NetHostMap, value, external, fqdn]}
572 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
573 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
574 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
575 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
576 management: {get_attr: [NetHostMap, value, management, fqdn]}
577 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
582 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
583 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
584 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
585 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
586 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
587 TENANTIP TENANTHOST.DOMAIN TENANTHOST
588 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
589 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
591 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
592 DOMAIN: {get_param: CloudDomain}
593 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
594 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
595 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
596 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
597 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
598 STORAGEIP: {get_attr: [StoragePort, ip_address]}
599 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
600 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
601 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
602 TENANTIP: {get_attr: [TenantPort, ip_address]}
603 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
604 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
605 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
606 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
607 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
609 description: Entry for ssh known hosts
612 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
613 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
614 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
615 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
616 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
617 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
618 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
619 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
621 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
622 DOMAIN: {get_param: CloudDomain}
623 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
624 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
625 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
626 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
627 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
628 STORAGEIP: {get_attr: [StoragePort, ip_address]}
629 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
630 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
631 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
632 TENANTIP: {get_attr: [TenantPort, ip_address]}
633 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
634 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
635 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
636 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
637 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
638 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
639 nova_server_resource:
640 description: Heat resource handle for the swift storage server
642 {get_resource: SwiftStorage}
643 condition: server_not_blacklisted
645 description: IP address of the server in the external network
646 value: {get_attr: [ExternalPort, ip_address]}
647 internal_api_ip_address:
648 description: IP address of the server in the internal_api network
649 value: {get_attr: [InternalApiPort, ip_address]}
651 description: IP address of the server in the storage network
652 value: {get_attr: [StoragePort, ip_address]}
653 storage_mgmt_ip_address:
654 description: IP address of the server in the storage_mgmt network
655 value: {get_attr: [StorageMgmtPort, ip_address]}
657 description: IP address of the server in the tenant network
658 value: {get_attr: [TenantPort, ip_address]}
659 management_ip_address:
660 description: IP address of the server in the management network
661 value: {get_attr: [ManagementPort, ip_address]}
662 deployed_server_port_map:
664 Map of Heat created hostname of the server to ip address. This is the
665 hostname before it has been mapped with the HostnameMap parameter, and
666 the IP address from the ctlplane network. This map can be used to construct
667 the DeployedServerPortMap parameter when using split-stack.
672 - ip_address: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
677 - - {get_param: Hostname}
679 deployed_server_deployment_swift_data_map:
681 Map of Heat created hostname of the server to the Swift container and object
682 used to created the temporary url for metadata polling with
690 - {get_attr: [SwiftStorage, os_collect_config, request, metadata_url]}
697 - {get_attr: [SwiftStorage, os_collect_config, request, metadata_url]}
700 - keys: {hostname: {get_param: Hostname}}
702 description: The os-collect-config configuration associated with this server resource
703 value: {get_attr: [SwiftStorage, os_collect_config]}