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}
413 type: OS::TripleO::SoftwareDeployment
414 depends_on: PreNetworkConfig
416 name: NetworkDeployment
417 config: {get_resource: NetworkConfig}
418 server: {get_resource: SwiftStorage}
421 - server_not_blacklisted
422 - {get_param: NetworkDeploymentActions}
426 SwiftStorageUpgradeInitConfig:
427 type: OS::Heat::SoftwareConfig
433 - - "#!/bin/bash\n\n"
434 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
435 - get_param: UpgradeInitCommand
436 - get_param: UpgradeInitCommonCommand
438 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
439 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
440 SwiftStorageUpgradeInitDeployment:
441 type: OS::Heat::SoftwareDeployment
442 depends_on: NetworkDeployment
444 name: SwiftStorageUpgradeInitDeployment
445 server: {get_resource: SwiftStorage}
446 config: {get_resource: SwiftStorageUpgradeInitConfig}
449 - server_not_blacklisted
450 - ['CREATE', 'UPDATE']
453 SwiftStorageHieraConfig:
454 type: OS::Heat::StructuredConfig
460 - heat_config_%{::deploy_config_name}
467 - bootstrap_node # provided by allNodesConfig
468 - all_nodes # provided by allNodesConfig
469 - vip_data # provided by allNodesConfig
471 merge_behavior: deeper
474 service_names: {get_param: ServiceNames}
475 sensu::subscriptions: {get_param: MonitoringSubscriptions}
478 - {get_param: ServiceConfigSettings}
479 - values: {get_attr: [NetIpMap, net_ip_map]}
480 object_extraconfig: {get_param: ObjectStorageExtraConfig}
481 extraconfig: {get_param: ExtraConfig}
483 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
484 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
485 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
486 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
487 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
488 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
489 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
490 fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
492 SwiftStorageHieraDeploy:
493 type: OS::Heat::StructuredDeployment
494 depends_on: SwiftStorageUpgradeInitDeployment
496 name: SwiftStorageHieraDeploy
497 server: {get_resource: SwiftStorage}
498 config: {get_resource: SwiftStorageHieraConfig}
500 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
503 - server_not_blacklisted
504 - ['CREATE', 'UPDATE']
507 # Resource for site-specific injection of root certificate
509 depends_on: SwiftStorageHieraDeploy
510 type: OS::TripleO::NodeTLSCAData
512 server: {get_resource: SwiftStorage}
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: SwiftStorage}
523 type: OS::TripleO::Tasks::PackageUpdate
526 type: OS::Heat::SoftwareDeployment
527 depends_on: NetworkDeployment
529 config: {get_resource: UpdateConfig}
530 server: {get_resource: SwiftStorage}
533 get_param: UpdateIdentifier
536 - server_not_blacklisted
537 - ['CREATE', 'UPDATE']
541 type: OS::TripleO::Ssh::HostPubKey
542 depends_on: SwiftStorageHieraDeploy
544 server: {get_resource: SwiftStorage}
548 description: IP address of the server in the ctlplane network
549 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
551 description: Hostname of the server
552 value: {get_attr: [SwiftStorage, name]}
554 description: Mapping of network names to hostnames
556 external: {get_attr: [NetHostMap, value, external, fqdn]}
557 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
558 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
559 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
560 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
561 management: {get_attr: [NetHostMap, value, management, fqdn]}
562 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
567 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
568 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
569 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
570 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
571 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
572 TENANTIP TENANTHOST.DOMAIN TENANTHOST
573 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
574 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
576 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
577 DOMAIN: {get_param: CloudDomain}
578 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
579 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
580 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
581 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
582 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
583 STORAGEIP: {get_attr: [StoragePort, ip_address]}
584 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
585 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
586 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
587 TENANTIP: {get_attr: [TenantPort, ip_address]}
588 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
589 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
590 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
591 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
592 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
594 description: Entry for ssh known hosts
597 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
598 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
599 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
600 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
601 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
602 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
603 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
604 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
606 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
607 DOMAIN: {get_param: CloudDomain}
608 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
609 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
610 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
611 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
612 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
613 STORAGEIP: {get_attr: [StoragePort, ip_address]}
614 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
615 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
616 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
617 TENANTIP: {get_attr: [TenantPort, ip_address]}
618 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
619 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
620 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
621 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
622 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
623 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
624 nova_server_resource:
625 description: Heat resource handle for the swift storage server
627 {get_resource: SwiftStorage}
628 condition: server_not_blacklisted
630 description: IP address of the server in the external network
631 value: {get_attr: [ExternalPort, ip_address]}
632 internal_api_ip_address:
633 description: IP address of the server in the internal_api network
634 value: {get_attr: [InternalApiPort, ip_address]}
636 description: IP address of the server in the storage network
637 value: {get_attr: [StoragePort, ip_address]}
638 storage_mgmt_ip_address:
639 description: IP address of the server in the storage_mgmt network
640 value: {get_attr: [StorageMgmtPort, ip_address]}
642 description: IP address of the server in the tenant network
643 value: {get_attr: [TenantPort, ip_address]}
644 management_ip_address:
645 description: IP address of the server in the management network
646 value: {get_attr: [ManagementPort, ip_address]}
648 description: The os-collect-config configuration associated with this server resource
649 value: {get_attr: [SwiftStorage, os_collect_config]}