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
115 Command or script snippet to run on all overcloud nodes to
116 initialize the upgrade process. E.g. a repository switch.
118 UpgradeInitCommonCommand:
121 Common commands required by the upgrades process. This should not
122 normally be modified by the operator and is set and unset in the
123 major-upgrade-composable-steps.yaml and major-upgrade-converge.yaml
130 type: OS::Nova::Server
133 command: {get_param: ConfigCommand}
135 image: {get_param: SwiftStorageImage}
136 flavor: {get_param: OvercloudSwiftStorageFlavor}
137 key_name: {get_param: KeyName}
140 user_data_format: SOFTWARE_CONFIG
141 user_data: {get_resource: UserData}
144 template: {get_param: Hostname}
145 params: {get_param: HostnameMap}
146 software_config_transport: {get_param: SoftwareConfigTransport}
149 - {get_param: ServerMetadata}
150 - {get_param: SwiftStorageServerMetadata}
151 - {get_param: ServiceMetadataSettings}
152 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
154 # Combine the NodeAdminUserData and NodeUserData mime archives
156 type: OS::Heat::MultipartMime
159 - config: {get_resource: NodeAdminUserData}
161 - config: {get_resource: NodeUserData}
163 - config: {get_resource: RoleUserData}
166 # Creates the "heat-admin" user if configured via the environment
167 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
169 type: OS::TripleO::NodeAdminUserData
171 # For optional operator additional userdata
172 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
174 type: OS::TripleO::NodeUserData
176 # For optional operator role-specific userdata
177 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
179 type: OS::TripleO::ObjectStorage::NodeUserData
182 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
184 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
185 IPPool: {get_param: SwiftStorageIPs}
186 NodeIndex: {get_param: NodeIndex}
189 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
191 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
192 IPPool: {get_param: SwiftStorageIPs}
193 NodeIndex: {get_param: NodeIndex}
196 type: OS::TripleO::SwiftStorage::Ports::StoragePort
198 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
199 IPPool: {get_param: SwiftStorageIPs}
200 NodeIndex: {get_param: NodeIndex}
203 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
205 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
206 IPPool: {get_param: SwiftStorageIPs}
207 NodeIndex: {get_param: NodeIndex}
210 type: OS::TripleO::SwiftStorage::Ports::TenantPort
212 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
213 IPPool: {get_param: SwiftStorageIPs}
214 NodeIndex: {get_param: NodeIndex}
217 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
219 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
220 IPPool: {get_param: SwiftStorageIPs}
221 NodeIndex: {get_param: NodeIndex}
224 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
226 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
227 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
228 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
229 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
230 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
231 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
232 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
235 type: OS::TripleO::Network::Ports::NetIpMap
237 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
238 ExternalIp: {get_attr: [ExternalPort, ip_address]}
239 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
240 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
241 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
242 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
243 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
244 StorageIp: {get_attr: [StoragePort, ip_address]}
245 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
246 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
247 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
248 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
249 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
250 TenantIp: {get_attr: [TenantPort, ip_address]}
251 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
252 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
253 ManagementIp: {get_attr: [ManagementPort, ip_address]}
254 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
255 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
258 type: OS::Heat::Value
266 - - {get_attr: [SwiftStorage, name]}
268 - {get_param: CloudDomain}
272 - - {get_attr: [SwiftStorage, name]}
278 - - {get_attr: [SwiftStorage, name]}
280 - {get_param: CloudDomain}
284 - - {get_attr: [SwiftStorage, name]}
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]}
348 type: OS::TripleO::ObjectStorage::PreNetworkConfig
350 server: {get_resource: SwiftStorage}
353 type: OS::TripleO::SoftwareDeployment
354 depends_on: PreNetworkConfig
356 name: NetworkDeployment
357 config: {get_resource: NetworkConfig}
358 server: {get_resource: SwiftStorage}
359 actions: {get_param: NetworkDeploymentActions}
361 SwiftStorageUpgradeInitConfig:
362 type: OS::Heat::SoftwareConfig
368 - - "#!/bin/bash\n\n"
369 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
370 - get_param: UpgradeInitCommand
371 - get_param: UpgradeInitCommonCommand
373 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
374 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
375 SwiftStorageUpgradeInitDeployment:
376 type: OS::Heat::SoftwareDeployment
377 depends_on: NetworkDeployment
379 name: SwiftStorageUpgradeInitDeployment
380 server: {get_resource: SwiftStorage}
381 config: {get_resource: SwiftStorageUpgradeInitConfig}
383 SwiftStorageHieraConfig:
384 type: OS::Heat::StructuredConfig
390 - heat_config_%{::deploy_config_name}
396 - bootstrap_node # provided by allNodesConfig
397 - all_nodes # provided by allNodesConfig
398 - vip_data # provided by allNodesConfig
400 merge_behavior: deeper
403 service_names: {get_param: ServiceNames}
404 sensu::subscriptions: {get_param: MonitoringSubscriptions}
407 - {get_param: ServiceConfigSettings}
408 - values: {get_attr: [NetIpMap, net_ip_map]}
409 object_extraconfig: {get_param: ObjectStorageExtraConfig}
410 extraconfig: {get_param: ExtraConfig}
412 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
413 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
414 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
415 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
416 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
417 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
418 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
420 SwiftStorageHieraDeploy:
421 type: OS::Heat::StructuredDeployment
422 depends_on: SwiftStorageUpgradeInitDeployment
424 name: SwiftStorageHieraDeploy
425 server: {get_resource: SwiftStorage}
426 config: {get_resource: SwiftStorageHieraConfig}
428 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
430 # Resource for site-specific injection of root certificate
432 depends_on: SwiftStorageHieraDeploy
433 type: OS::TripleO::NodeTLSCAData
435 server: {get_resource: SwiftStorage}
437 # Hook for site-specific additional pre-deployment config,
438 # applying to all nodes, e.g node registration/unregistration
440 depends_on: NodeTLSCAData
441 type: OS::TripleO::NodeExtraConfig
443 server: {get_resource: SwiftStorage}
446 type: OS::TripleO::Tasks::PackageUpdate
449 type: OS::Heat::SoftwareDeployment
450 depends_on: NetworkDeployment
452 config: {get_resource: UpdateConfig}
453 server: {get_resource: SwiftStorage}
456 get_param: UpdateIdentifier
459 type: OS::TripleO::Ssh::HostPubKey
460 depends_on: SwiftStorageHieraDeploy
462 server: {get_resource: SwiftStorage}
466 description: IP address of the server in the ctlplane network
467 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
469 description: Hostname of the server
470 value: {get_attr: [SwiftStorage, name]}
472 description: Mapping of network names to hostnames
474 external: {get_attr: [NetHostMap, value, external, fqdn]}
475 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
476 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
477 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
478 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
479 management: {get_attr: [NetHostMap, value, management, fqdn]}
480 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
485 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
486 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
487 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
488 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
489 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
490 TENANTIP TENANTHOST.DOMAIN TENANTHOST
491 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
492 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
494 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
495 DOMAIN: {get_param: CloudDomain}
496 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
497 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
498 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
499 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
500 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
501 STORAGEIP: {get_attr: [StoragePort, ip_address]}
502 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
503 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
504 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
505 TENANTIP: {get_attr: [TenantPort, ip_address]}
506 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
507 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
508 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
509 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
510 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
512 description: Entry for ssh known hosts
515 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
516 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
517 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
518 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
519 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
520 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
521 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
522 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
524 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
525 DOMAIN: {get_param: CloudDomain}
526 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
527 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
528 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
529 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
530 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
531 STORAGEIP: {get_attr: [StoragePort, ip_address]}
532 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
533 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
534 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
535 TENANTIP: {get_attr: [TenantPort, ip_address]}
536 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
537 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
538 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
539 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
540 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
541 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
542 nova_server_resource:
543 description: Heat resource handle for the swift storage server
545 {get_resource: SwiftStorage}
547 description: IP address of the server in the external network
548 value: {get_attr: [ExternalPort, ip_address]}
549 internal_api_ip_address:
550 description: IP address of the server in the internal_api network
551 value: {get_attr: [InternalApiPort, ip_address]}
553 description: IP address of the server in the storage network
554 value: {get_attr: [StoragePort, ip_address]}
555 storage_mgmt_ip_address:
556 description: IP address of the server in the storage_mgmt network
557 value: {get_attr: [StorageMgmtPort, ip_address]}
559 description: IP address of the server in the tenant network
560 value: {get_attr: [TenantPort, ip_address]}
561 management_ip_address:
562 description: IP address of the server in the management network
563 value: {get_attr: [ManagementPort, ip_address]}