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
451 config: {get_resource: UpdateConfig}
452 server: {get_resource: SwiftStorage}
455 get_param: UpdateIdentifier
459 description: IP address of the server in the ctlplane network
460 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
462 description: Hostname of the server
463 value: {get_attr: [SwiftStorage, name]}
465 description: Mapping of network names to hostnames
467 external: {get_attr: [NetHostMap, value, external, fqdn]}
468 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
469 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
470 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
471 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
472 management: {get_attr: [NetHostMap, value, management, fqdn]}
473 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
478 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
479 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
480 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
481 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
482 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
483 TENANTIP TENANTHOST.DOMAIN TENANTHOST
484 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
485 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
487 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
488 DOMAIN: {get_param: CloudDomain}
489 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
490 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
491 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
492 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
493 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
494 STORAGEIP: {get_attr: [StoragePort, ip_address]}
495 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
496 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
497 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
498 TENANTIP: {get_attr: [TenantPort, ip_address]}
499 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
500 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
501 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
502 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
503 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
504 nova_server_resource:
505 description: Heat resource handle for the swift storage server
507 {get_resource: SwiftStorage}
509 description: IP address of the server in the external network
510 value: {get_attr: [ExternalPort, ip_address]}
511 internal_api_ip_address:
512 description: IP address of the server in the internal_api network
513 value: {get_attr: [InternalApiPort, ip_address]}
515 description: IP address of the server in the storage network
516 value: {get_attr: [StoragePort, ip_address]}
517 storage_mgmt_ip_address:
518 description: IP address of the server in the storage_mgmt network
519 value: {get_attr: [StorageMgmtPort, ip_address]}
521 description: IP address of the server in the tenant network
522 value: {get_attr: [TenantPort, ip_address]}
523 management_ip_address:
524 description: IP address of the server in the management network
525 value: {get_attr: [ManagementPort, ip_address]}