1 heat_template_version: ocata
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
139 type: OS::TripleO::ObjectStorageServer
142 command: {get_param: ConfigCommand}
143 splay: {get_param: ConfigCollectSplay}
145 image: {get_param: SwiftStorageImage}
146 flavor: {get_param: OvercloudSwiftStorageFlavor}
147 key_name: {get_param: KeyName}
150 user_data_format: SOFTWARE_CONFIG
151 user_data: {get_resource: UserData}
154 template: {get_param: Hostname}
155 params: {get_param: HostnameMap}
156 software_config_transport: {get_param: SoftwareConfigTransport}
159 - {get_param: ServerMetadata}
160 - {get_param: SwiftStorageServerMetadata}
161 - {get_param: ServiceMetadataSettings}
162 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
164 # Combine the NodeAdminUserData and NodeUserData mime archives
166 type: OS::Heat::MultipartMime
169 - config: {get_resource: NodeAdminUserData}
171 - config: {get_resource: NodeUserData}
173 - config: {get_resource: RoleUserData}
176 # Creates the "heat-admin" user if configured via the environment
177 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
179 type: OS::TripleO::NodeAdminUserData
181 # For optional operator additional userdata
182 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
184 type: OS::TripleO::NodeUserData
186 # For optional operator role-specific userdata
187 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
189 type: OS::TripleO::ObjectStorage::NodeUserData
192 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
194 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
195 IPPool: {get_param: SwiftStorageIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
201 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
202 IPPool: {get_param: SwiftStorageIPs}
203 NodeIndex: {get_param: NodeIndex}
206 type: OS::TripleO::SwiftStorage::Ports::StoragePort
208 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
209 IPPool: {get_param: SwiftStorageIPs}
210 NodeIndex: {get_param: NodeIndex}
213 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
215 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
216 IPPool: {get_param: SwiftStorageIPs}
217 NodeIndex: {get_param: NodeIndex}
220 type: OS::TripleO::SwiftStorage::Ports::TenantPort
222 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
223 IPPool: {get_param: SwiftStorageIPs}
224 NodeIndex: {get_param: NodeIndex}
227 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
229 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
230 IPPool: {get_param: SwiftStorageIPs}
231 NodeIndex: {get_param: NodeIndex}
234 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
236 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
237 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
238 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
239 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
240 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
241 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
242 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
245 type: OS::TripleO::Network::Ports::NetIpMap
247 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
248 ExternalIp: {get_attr: [ExternalPort, ip_address]}
249 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
250 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
251 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
252 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
253 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
254 StorageIp: {get_attr: [StoragePort, ip_address]}
255 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
256 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
257 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
258 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
259 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
260 TenantIp: {get_attr: [TenantPort, ip_address]}
261 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
262 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
263 ManagementIp: {get_attr: [ManagementPort, ip_address]}
264 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
265 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
268 type: OS::Heat::Value
276 - - {get_attr: [SwiftStorage, name]}
278 - {get_param: CloudDomain}
282 - - {get_attr: [SwiftStorage, name]}
288 - - {get_attr: [SwiftStorage, name]}
290 - {get_param: CloudDomain}
294 - - {get_attr: [SwiftStorage, name]}
300 - - {get_attr: [SwiftStorage, name]}
302 - {get_param: CloudDomain}
306 - - {get_attr: [SwiftStorage, name]}
312 - - {get_attr: [SwiftStorage, name]}
314 - {get_param: CloudDomain}
318 - - {get_attr: [SwiftStorage, name]}
324 - - {get_attr: [SwiftStorage, name]}
326 - {get_param: CloudDomain}
330 - - {get_attr: [SwiftStorage, name]}
336 - - {get_attr: [SwiftStorage, name]}
338 - {get_param: CloudDomain}
342 - - {get_attr: [SwiftStorage, name]}
348 - - {get_attr: [SwiftStorage, name]}
350 - {get_param: CloudDomain}
354 - - {get_attr: [SwiftStorage, name]}
358 type: OS::TripleO::ObjectStorage::PreNetworkConfig
360 server: {get_resource: SwiftStorage}
363 type: OS::TripleO::SoftwareDeployment
364 depends_on: PreNetworkConfig
366 name: NetworkDeployment
367 config: {get_resource: NetworkConfig}
368 server: {get_resource: SwiftStorage}
369 actions: {get_param: NetworkDeploymentActions}
371 SwiftStorageUpgradeInitConfig:
372 type: OS::Heat::SoftwareConfig
378 - - "#!/bin/bash\n\n"
379 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
380 - get_param: UpgradeInitCommand
381 - get_param: UpgradeInitCommonCommand
383 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
384 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
385 SwiftStorageUpgradeInitDeployment:
386 type: OS::Heat::SoftwareDeployment
387 depends_on: NetworkDeployment
389 name: SwiftStorageUpgradeInitDeployment
390 server: {get_resource: SwiftStorage}
391 config: {get_resource: SwiftStorageUpgradeInitConfig}
393 SwiftStorageHieraConfig:
394 type: OS::Heat::StructuredConfig
400 - heat_config_%{::deploy_config_name}
406 - bootstrap_node # provided by allNodesConfig
407 - all_nodes # provided by allNodesConfig
408 - vip_data # provided by allNodesConfig
410 merge_behavior: deeper
413 service_names: {get_param: ServiceNames}
414 sensu::subscriptions: {get_param: MonitoringSubscriptions}
417 - {get_param: ServiceConfigSettings}
418 - values: {get_attr: [NetIpMap, net_ip_map]}
419 object_extraconfig: {get_param: ObjectStorageExtraConfig}
420 extraconfig: {get_param: ExtraConfig}
422 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
423 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
424 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
425 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
426 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
427 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
428 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
430 SwiftStorageHieraDeploy:
431 type: OS::Heat::StructuredDeployment
432 depends_on: SwiftStorageUpgradeInitDeployment
434 name: SwiftStorageHieraDeploy
435 server: {get_resource: SwiftStorage}
436 config: {get_resource: SwiftStorageHieraConfig}
438 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
440 # Resource for site-specific injection of root certificate
442 depends_on: SwiftStorageHieraDeploy
443 type: OS::TripleO::NodeTLSCAData
445 server: {get_resource: SwiftStorage}
447 # Hook for site-specific additional pre-deployment config,
448 # applying to all nodes, e.g node registration/unregistration
450 depends_on: NodeTLSCAData
451 type: OS::TripleO::NodeExtraConfig
453 server: {get_resource: SwiftStorage}
456 type: OS::TripleO::Tasks::PackageUpdate
459 type: OS::Heat::SoftwareDeployment
460 depends_on: NetworkDeployment
462 config: {get_resource: UpdateConfig}
463 server: {get_resource: SwiftStorage}
466 get_param: UpdateIdentifier
469 type: OS::TripleO::Ssh::HostPubKey
470 depends_on: SwiftStorageHieraDeploy
472 server: {get_resource: SwiftStorage}
476 description: IP address of the server in the ctlplane network
477 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
479 description: Hostname of the server
480 value: {get_attr: [SwiftStorage, name]}
482 description: Mapping of network names to hostnames
484 external: {get_attr: [NetHostMap, value, external, fqdn]}
485 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
486 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
487 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
488 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
489 management: {get_attr: [NetHostMap, value, management, fqdn]}
490 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
495 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
496 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
497 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
498 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
499 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
500 TENANTIP TENANTHOST.DOMAIN TENANTHOST
501 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
502 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
504 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
505 DOMAIN: {get_param: CloudDomain}
506 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
507 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
508 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
509 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
510 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
511 STORAGEIP: {get_attr: [StoragePort, ip_address]}
512 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
513 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
514 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
515 TENANTIP: {get_attr: [TenantPort, ip_address]}
516 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
517 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
518 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
519 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
520 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
522 description: Entry for ssh known hosts
525 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
526 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
527 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
528 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
529 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
530 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
531 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
532 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
534 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
535 DOMAIN: {get_param: CloudDomain}
536 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
537 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
538 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
539 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
540 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
541 STORAGEIP: {get_attr: [StoragePort, ip_address]}
542 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
543 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
544 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
545 TENANTIP: {get_attr: [TenantPort, ip_address]}
546 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
547 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
548 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
549 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
550 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
551 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
552 nova_server_resource:
553 description: Heat resource handle for the swift storage server
555 {get_resource: SwiftStorage}
557 description: IP address of the server in the external network
558 value: {get_attr: [ExternalPort, ip_address]}
559 internal_api_ip_address:
560 description: IP address of the server in the internal_api network
561 value: {get_attr: [InternalApiPort, ip_address]}
563 description: IP address of the server in the storage network
564 value: {get_attr: [StoragePort, ip_address]}
565 storage_mgmt_ip_address:
566 description: IP address of the server in the storage_mgmt network
567 value: {get_attr: [StorageMgmtPort, ip_address]}
569 description: IP address of the server in the tenant network
570 value: {get_attr: [TenantPort, ip_address]}
571 management_ip_address:
572 description: IP address of the server in the management network
573 value: {get_attr: [ManagementPort, ip_address]}