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
148 server_not_blacklisted:
151 - {get_param: [DeploymentServerBlacklistDict, {get_param: Hostname}]}
157 type: OS::TripleO::ObjectStorageServer
160 command: {get_param: ConfigCommand}
161 splay: {get_param: ConfigCollectSplay}
163 image: {get_param: SwiftStorageImage}
164 flavor: {get_param: OvercloudSwiftStorageFlavor}
165 key_name: {get_param: KeyName}
168 user_data_format: SOFTWARE_CONFIG
169 user_data: {get_resource: UserData}
172 template: {get_param: Hostname}
173 params: {get_param: HostnameMap}
174 software_config_transport: {get_param: SoftwareConfigTransport}
177 - {get_param: ServerMetadata}
178 - {get_param: SwiftStorageServerMetadata}
179 - {get_param: ServiceMetadataSettings}
180 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
182 # Combine the NodeAdminUserData and NodeUserData mime archives
184 type: OS::Heat::MultipartMime
187 - config: {get_resource: NodeAdminUserData}
189 - config: {get_resource: NodeUserData}
191 - config: {get_resource: RoleUserData}
194 # Creates the "heat-admin" user if configured via the environment
195 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
197 type: OS::TripleO::NodeAdminUserData
199 # For optional operator additional userdata
200 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
202 type: OS::TripleO::NodeUserData
204 # For optional operator role-specific userdata
205 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
207 type: OS::TripleO::ObjectStorage::NodeUserData
210 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
212 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
213 IPPool: {get_param: SwiftStorageIPs}
214 NodeIndex: {get_param: NodeIndex}
217 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
219 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
220 IPPool: {get_param: SwiftStorageIPs}
221 NodeIndex: {get_param: NodeIndex}
224 type: OS::TripleO::SwiftStorage::Ports::StoragePort
226 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
227 IPPool: {get_param: SwiftStorageIPs}
228 NodeIndex: {get_param: NodeIndex}
231 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
233 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
234 IPPool: {get_param: SwiftStorageIPs}
235 NodeIndex: {get_param: NodeIndex}
238 type: OS::TripleO::SwiftStorage::Ports::TenantPort
240 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
241 IPPool: {get_param: SwiftStorageIPs}
242 NodeIndex: {get_param: NodeIndex}
245 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
247 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
248 IPPool: {get_param: SwiftStorageIPs}
249 NodeIndex: {get_param: NodeIndex}
252 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
254 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
255 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
256 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
257 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
258 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
259 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
260 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
263 type: OS::TripleO::Network::Ports::NetIpMap
265 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
266 ExternalIp: {get_attr: [ExternalPort, ip_address]}
267 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
268 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
269 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
270 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
271 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
272 StorageIp: {get_attr: [StoragePort, ip_address]}
273 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
274 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
275 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
276 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
277 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
278 TenantIp: {get_attr: [TenantPort, ip_address]}
279 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
280 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
281 ManagementIp: {get_attr: [ManagementPort, ip_address]}
282 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
283 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
286 type: OS::Heat::Value
294 - - {get_attr: [SwiftStorage, name]}
296 - {get_param: CloudDomain}
300 - - {get_attr: [SwiftStorage, name]}
306 - - {get_attr: [SwiftStorage, name]}
308 - {get_param: CloudDomain}
312 - - {get_attr: [SwiftStorage, name]}
318 - - {get_attr: [SwiftStorage, name]}
320 - {get_param: CloudDomain}
324 - - {get_attr: [SwiftStorage, name]}
330 - - {get_attr: [SwiftStorage, name]}
332 - {get_param: CloudDomain}
336 - - {get_attr: [SwiftStorage, name]}
342 - - {get_attr: [SwiftStorage, name]}
344 - {get_param: CloudDomain}
348 - - {get_attr: [SwiftStorage, name]}
354 - - {get_attr: [SwiftStorage, name]}
356 - {get_param: CloudDomain}
360 - - {get_attr: [SwiftStorage, name]}
366 - - {get_attr: [SwiftStorage, name]}
368 - {get_param: CloudDomain}
372 - - {get_attr: [SwiftStorage, name]}
376 type: OS::TripleO::ObjectStorage::PreNetworkConfig
378 server: {get_resource: SwiftStorage}
379 RoleParameters: {get_param: RoleParameters}
380 deployment_actions: {get_attr: [DeploymentActions, value]}
383 type: OS::TripleO::SoftwareDeployment
384 depends_on: PreNetworkConfig
386 name: NetworkDeployment
387 config: {get_resource: NetworkConfig}
388 server: {get_resource: SwiftStorage}
391 - server_not_blacklisted
392 - {get_param: NetworkDeploymentActions}
396 SwiftStorageUpgradeInitConfig:
397 type: OS::Heat::SoftwareConfig
403 - - "#!/bin/bash\n\n"
404 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
405 - get_param: UpgradeInitCommand
406 - get_param: UpgradeInitCommonCommand
408 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
409 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
410 SwiftStorageUpgradeInitDeployment:
411 type: OS::Heat::SoftwareDeployment
412 depends_on: NetworkDeployment
414 name: SwiftStorageUpgradeInitDeployment
415 server: {get_resource: SwiftStorage}
416 config: {get_resource: SwiftStorageUpgradeInitConfig}
419 - server_not_blacklisted
420 - ['CREATE', 'UPDATE']
423 SwiftStorageHieraConfig:
424 type: OS::Heat::StructuredConfig
430 - heat_config_%{::deploy_config_name}
437 - bootstrap_node # provided by allNodesConfig
438 - all_nodes # provided by allNodesConfig
439 - vip_data # provided by allNodesConfig
441 merge_behavior: deeper
444 service_names: {get_param: ServiceNames}
445 sensu::subscriptions: {get_param: MonitoringSubscriptions}
448 - {get_param: ServiceConfigSettings}
449 - values: {get_attr: [NetIpMap, net_ip_map]}
450 object_extraconfig: {get_param: ObjectStorageExtraConfig}
451 extraconfig: {get_param: ExtraConfig}
453 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
454 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
455 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
456 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
457 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
458 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
459 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
460 fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
462 SwiftStorageHieraDeploy:
463 type: OS::Heat::StructuredDeployment
464 depends_on: SwiftStorageUpgradeInitDeployment
466 name: SwiftStorageHieraDeploy
467 server: {get_resource: SwiftStorage}
468 config: {get_resource: SwiftStorageHieraConfig}
470 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
473 - server_not_blacklisted
474 - ['CREATE', 'UPDATE']
477 # Resource for site-specific injection of root certificate
479 depends_on: SwiftStorageHieraDeploy
480 type: OS::TripleO::NodeTLSCAData
482 server: {get_resource: SwiftStorage}
484 # Hook for site-specific additional pre-deployment config,
485 # applying to all nodes, e.g node registration/unregistration
487 depends_on: NodeTLSCAData
488 type: OS::TripleO::NodeExtraConfig
489 # We have to use conditions here so that we don't break backwards
490 # compatibility with templates everywhere
491 condition: server_not_blacklisted
493 server: {get_resource: SwiftStorage}
496 type: OS::TripleO::Tasks::PackageUpdate
499 type: OS::Heat::SoftwareDeployment
500 depends_on: NetworkDeployment
502 config: {get_resource: UpdateConfig}
503 server: {get_resource: SwiftStorage}
506 get_param: UpdateIdentifier
509 - server_not_blacklisted
510 - ['CREATE', 'UPDATE']
514 type: OS::Heat::Value
518 - server_not_blacklisted
519 - ['CREATE', 'UPDATE']
523 type: OS::TripleO::Ssh::HostPubKey
524 depends_on: SwiftStorageHieraDeploy
526 server: {get_resource: SwiftStorage}
527 deployment_actions: {get_attr: [DeploymentActions, value]}
531 description: IP address of the server in the ctlplane network
532 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
534 description: Hostname of the server
535 value: {get_attr: [SwiftStorage, name]}
537 description: Mapping of network names to hostnames
539 external: {get_attr: [NetHostMap, value, external, fqdn]}
540 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
541 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
542 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
543 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
544 management: {get_attr: [NetHostMap, value, management, fqdn]}
545 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
550 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
551 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
552 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
553 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
554 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
555 TENANTIP TENANTHOST.DOMAIN TENANTHOST
556 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
557 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
559 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
560 DOMAIN: {get_param: CloudDomain}
561 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
562 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
563 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
564 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
565 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
566 STORAGEIP: {get_attr: [StoragePort, ip_address]}
567 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
568 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
569 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
570 TENANTIP: {get_attr: [TenantPort, ip_address]}
571 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
572 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
573 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
574 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
575 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
577 description: Entry for ssh known hosts
580 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
581 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
582 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
583 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
584 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
585 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
586 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
587 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
589 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
590 DOMAIN: {get_param: CloudDomain}
591 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
592 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
593 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
594 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
595 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
596 STORAGEIP: {get_attr: [StoragePort, ip_address]}
597 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
598 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
599 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
600 TENANTIP: {get_attr: [TenantPort, ip_address]}
601 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
602 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
603 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
604 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
605 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
606 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
607 nova_server_resource:
608 description: Heat resource handle for the swift storage server
610 {get_resource: SwiftStorage}
611 condition: server_not_blacklisted
613 description: IP address of the server in the external network
614 value: {get_attr: [ExternalPort, ip_address]}
615 internal_api_ip_address:
616 description: IP address of the server in the internal_api network
617 value: {get_attr: [InternalApiPort, ip_address]}
619 description: IP address of the server in the storage network
620 value: {get_attr: [StoragePort, ip_address]}
621 storage_mgmt_ip_address:
622 description: IP address of the server in the storage_mgmt network
623 value: {get_attr: [StorageMgmtPort, ip_address]}
625 description: IP address of the server in the tenant network
626 value: {get_attr: [TenantPort, ip_address]}
627 management_ip_address:
628 description: IP address of the server in the management network
629 value: {get_attr: [ManagementPort, ip_address]}