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 should match the dhcp_domain
73 configured in the Undercloud neutron. Defaults to localdomain.
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 server_not_blacklisted:
147 - {get_param: [DeploymentServerBlacklistDict, {get_param: Hostname}]}
153 type: OS::TripleO::ObjectStorageServer
156 command: {get_param: ConfigCommand}
157 splay: {get_param: ConfigCollectSplay}
159 image: {get_param: SwiftStorageImage}
160 flavor: {get_param: OvercloudSwiftStorageFlavor}
161 key_name: {get_param: KeyName}
164 user_data_format: SOFTWARE_CONFIG
165 user_data: {get_resource: UserData}
168 template: {get_param: Hostname}
169 params: {get_param: HostnameMap}
170 software_config_transport: {get_param: SoftwareConfigTransport}
173 - {get_param: ServerMetadata}
174 - {get_param: SwiftStorageServerMetadata}
175 - {get_param: ServiceMetadataSettings}
176 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
178 # Combine the NodeAdminUserData and NodeUserData mime archives
180 type: OS::Heat::MultipartMime
183 - config: {get_resource: NodeAdminUserData}
185 - config: {get_resource: NodeUserData}
187 - config: {get_resource: RoleUserData}
190 # Creates the "heat-admin" user if configured via the environment
191 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
193 type: OS::TripleO::NodeAdminUserData
195 # For optional operator additional userdata
196 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
198 type: OS::TripleO::NodeUserData
200 # For optional operator role-specific userdata
201 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
203 type: OS::TripleO::ObjectStorage::NodeUserData
206 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
208 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
209 IPPool: {get_param: SwiftStorageIPs}
210 NodeIndex: {get_param: NodeIndex}
213 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
215 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
216 IPPool: {get_param: SwiftStorageIPs}
217 NodeIndex: {get_param: NodeIndex}
220 type: OS::TripleO::SwiftStorage::Ports::StoragePort
222 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
223 IPPool: {get_param: SwiftStorageIPs}
224 NodeIndex: {get_param: NodeIndex}
227 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
229 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
230 IPPool: {get_param: SwiftStorageIPs}
231 NodeIndex: {get_param: NodeIndex}
234 type: OS::TripleO::SwiftStorage::Ports::TenantPort
236 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
237 IPPool: {get_param: SwiftStorageIPs}
238 NodeIndex: {get_param: NodeIndex}
241 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
243 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
244 IPPool: {get_param: SwiftStorageIPs}
245 NodeIndex: {get_param: NodeIndex}
248 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
250 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
251 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
252 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
253 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
254 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
255 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
256 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
259 type: OS::TripleO::Network::Ports::NetIpMap
261 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
262 ExternalIp: {get_attr: [ExternalPort, ip_address]}
263 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
264 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
265 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
266 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
267 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
268 StorageIp: {get_attr: [StoragePort, ip_address]}
269 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
270 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
271 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
272 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
273 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
274 TenantIp: {get_attr: [TenantPort, ip_address]}
275 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
276 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
277 ManagementIp: {get_attr: [ManagementPort, ip_address]}
278 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
279 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
282 type: OS::Heat::Value
290 - - {get_attr: [SwiftStorage, name]}
292 - {get_param: CloudDomain}
296 - - {get_attr: [SwiftStorage, name]}
302 - - {get_attr: [SwiftStorage, name]}
304 - {get_param: CloudDomain}
308 - - {get_attr: [SwiftStorage, name]}
314 - - {get_attr: [SwiftStorage, name]}
316 - {get_param: CloudDomain}
320 - - {get_attr: [SwiftStorage, name]}
326 - - {get_attr: [SwiftStorage, name]}
328 - {get_param: CloudDomain}
332 - - {get_attr: [SwiftStorage, name]}
338 - - {get_attr: [SwiftStorage, name]}
340 - {get_param: CloudDomain}
344 - - {get_attr: [SwiftStorage, name]}
350 - - {get_attr: [SwiftStorage, name]}
352 - {get_param: CloudDomain}
356 - - {get_attr: [SwiftStorage, name]}
362 - - {get_attr: [SwiftStorage, name]}
364 - {get_param: CloudDomain}
368 - - {get_attr: [SwiftStorage, name]}
372 type: OS::TripleO::ObjectStorage::PreNetworkConfig
374 server: {get_resource: SwiftStorage}
377 type: OS::TripleO::SoftwareDeployment
378 depends_on: PreNetworkConfig
379 condition: server_not_blacklisted
381 name: NetworkDeployment
382 config: {get_resource: NetworkConfig}
383 server: {get_resource: SwiftStorage}
384 actions: {get_param: NetworkDeploymentActions}
386 SwiftStorageUpgradeInitConfig:
387 type: OS::Heat::SoftwareConfig
393 - - "#!/bin/bash\n\n"
394 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
395 - get_param: UpgradeInitCommand
396 - get_param: UpgradeInitCommonCommand
398 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
399 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
400 SwiftStorageUpgradeInitDeployment:
401 type: OS::Heat::SoftwareDeployment
402 depends_on: NetworkDeployment
403 condition: server_not_blacklisted
405 name: SwiftStorageUpgradeInitDeployment
406 server: {get_resource: SwiftStorage}
407 config: {get_resource: SwiftStorageUpgradeInitConfig}
409 SwiftStorageHieraConfig:
410 type: OS::Heat::StructuredConfig
416 - heat_config_%{::deploy_config_name}
422 - bootstrap_node # provided by allNodesConfig
423 - all_nodes # provided by allNodesConfig
424 - vip_data # provided by allNodesConfig
426 merge_behavior: deeper
429 service_names: {get_param: ServiceNames}
430 sensu::subscriptions: {get_param: MonitoringSubscriptions}
433 - {get_param: ServiceConfigSettings}
434 - values: {get_attr: [NetIpMap, net_ip_map]}
435 object_extraconfig: {get_param: ObjectStorageExtraConfig}
436 extraconfig: {get_param: ExtraConfig}
438 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
439 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
440 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
441 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
442 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
443 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
444 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
446 SwiftStorageHieraDeploy:
447 type: OS::Heat::StructuredDeployment
448 depends_on: SwiftStorageUpgradeInitDeployment
449 condition: server_not_blacklisted
451 name: SwiftStorageHieraDeploy
452 server: {get_resource: SwiftStorage}
453 config: {get_resource: SwiftStorageHieraConfig}
455 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
457 # Resource for site-specific injection of root certificate
459 depends_on: SwiftStorageHieraDeploy
460 type: OS::TripleO::NodeTLSCAData
462 server: {get_resource: SwiftStorage}
464 # Hook for site-specific additional pre-deployment config,
465 # applying to all nodes, e.g node registration/unregistration
467 depends_on: NodeTLSCAData
468 type: OS::TripleO::NodeExtraConfig
470 server: {get_resource: SwiftStorage}
473 type: OS::TripleO::Tasks::PackageUpdate
476 type: OS::Heat::SoftwareDeployment
477 depends_on: NetworkDeployment
478 condition: server_not_blacklisted
480 config: {get_resource: UpdateConfig}
481 server: {get_resource: SwiftStorage}
484 get_param: UpdateIdentifier
487 type: OS::TripleO::Ssh::HostPubKey
488 depends_on: SwiftStorageHieraDeploy
490 server: {get_resource: SwiftStorage}
494 description: IP address of the server in the ctlplane network
495 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
497 description: Hostname of the server
498 value: {get_attr: [SwiftStorage, name]}
500 description: Mapping of network names to hostnames
502 external: {get_attr: [NetHostMap, value, external, fqdn]}
503 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
504 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
505 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
506 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
507 management: {get_attr: [NetHostMap, value, management, fqdn]}
508 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
513 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
514 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
515 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
516 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
517 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
518 TENANTIP TENANTHOST.DOMAIN TENANTHOST
519 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
520 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
522 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
523 DOMAIN: {get_param: CloudDomain}
524 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
525 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
526 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
527 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
528 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
529 STORAGEIP: {get_attr: [StoragePort, ip_address]}
530 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
531 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
532 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
533 TENANTIP: {get_attr: [TenantPort, ip_address]}
534 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
535 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
536 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
537 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
538 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
540 description: Entry for ssh known hosts
543 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
544 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
545 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
546 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
547 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
548 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
549 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
550 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
552 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
553 DOMAIN: {get_param: CloudDomain}
554 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
555 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
556 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
557 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
558 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
559 STORAGEIP: {get_attr: [StoragePort, ip_address]}
560 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
561 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
562 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
563 TENANTIP: {get_attr: [TenantPort, ip_address]}
564 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
565 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
566 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
567 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
568 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
569 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
570 nova_server_resource:
571 description: Heat resource handle for the swift storage server
573 {get_resource: SwiftStorage}
574 condition: server_not_blacklisted
576 description: IP address of the server in the external network
577 value: {get_attr: [ExternalPort, ip_address]}
578 internal_api_ip_address:
579 description: IP address of the server in the internal_api network
580 value: {get_attr: [InternalApiPort, ip_address]}
582 description: IP address of the server in the storage network
583 value: {get_attr: [StoragePort, ip_address]}
584 storage_mgmt_ip_address:
585 description: IP address of the server in the storage_mgmt network
586 value: {get_attr: [StorageMgmtPort, ip_address]}
588 description: IP address of the server in the tenant network
589 value: {get_attr: [TenantPort, ip_address]}
590 management_ip_address:
591 description: IP address of the server in the management network
592 value: {get_attr: [ManagementPort, ip_address]}