1 heat_template_version: 2016-10-14
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
107 description: Command which will be run whenever configuration data changes
108 default: os-refresh-config --timeout 14400
112 Command or script snippet to run on all overcloud nodes to
113 initialize the upgrade process. E.g. a repository switch.
119 type: OS::Nova::Server
122 command: {get_param: ConfigCommand}
124 image: {get_param: SwiftStorageImage}
125 flavor: {get_param: OvercloudSwiftStorageFlavor}
126 key_name: {get_param: KeyName}
129 user_data_format: SOFTWARE_CONFIG
130 user_data: {get_resource: UserData}
133 template: {get_param: Hostname}
134 params: {get_param: HostnameMap}
135 software_config_transport: {get_param: SoftwareConfigTransport}
138 - {get_param: ServerMetadata}
139 - {get_param: SwiftStorageServerMetadata}
140 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
142 # Combine the NodeAdminUserData and NodeUserData mime archives
144 type: OS::Heat::MultipartMime
147 - config: {get_resource: NodeAdminUserData}
149 - config: {get_resource: NodeUserData}
152 # Creates the "heat-admin" user if configured via the environment
153 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
155 type: OS::TripleO::NodeAdminUserData
157 # For optional operator additional userdata
158 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
160 type: OS::TripleO::NodeUserData
163 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
165 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
166 IPPool: {get_param: SwiftStorageIPs}
167 NodeIndex: {get_param: NodeIndex}
170 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
172 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
173 IPPool: {get_param: SwiftStorageIPs}
174 NodeIndex: {get_param: NodeIndex}
177 type: OS::TripleO::SwiftStorage::Ports::StoragePort
179 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
180 IPPool: {get_param: SwiftStorageIPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
186 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
187 IPPool: {get_param: SwiftStorageIPs}
188 NodeIndex: {get_param: NodeIndex}
191 type: OS::TripleO::SwiftStorage::Ports::TenantPort
193 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
194 IPPool: {get_param: SwiftStorageIPs}
195 NodeIndex: {get_param: NodeIndex}
198 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
200 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
201 IPPool: {get_param: SwiftStorageIPs}
202 NodeIndex: {get_param: NodeIndex}
205 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
207 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
208 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
209 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
210 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
211 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
212 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
213 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
216 type: OS::TripleO::Network::Ports::NetIpMap
218 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
219 ExternalIp: {get_attr: [ExternalPort, ip_address]}
220 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
221 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
222 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
223 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
224 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
225 StorageIp: {get_attr: [StoragePort, ip_address]}
226 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
227 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
228 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
229 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
230 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
231 TenantIp: {get_attr: [TenantPort, ip_address]}
232 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
233 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
234 ManagementIp: {get_attr: [ManagementPort, ip_address]}
235 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
236 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
239 type: OS::Heat::Value
247 - - {get_attr: [SwiftStorage, name]}
249 - {get_param: CloudDomain}
253 - - {get_attr: [SwiftStorage, name]}
259 - - {get_attr: [SwiftStorage, name]}
261 - {get_param: CloudDomain}
265 - - {get_attr: [SwiftStorage, name]}
271 - - {get_attr: [SwiftStorage, name]}
273 - {get_param: CloudDomain}
277 - - {get_attr: [SwiftStorage, name]}
283 - - {get_attr: [SwiftStorage, name]}
285 - {get_param: CloudDomain}
289 - - {get_attr: [SwiftStorage, name]}
295 - - {get_attr: [SwiftStorage, name]}
297 - {get_param: CloudDomain}
301 - - {get_attr: [SwiftStorage, name]}
307 - - {get_attr: [SwiftStorage, name]}
309 - {get_param: CloudDomain}
313 - - {get_attr: [SwiftStorage, name]}
319 - - {get_attr: [SwiftStorage, name]}
321 - {get_param: CloudDomain}
325 - - {get_attr: [SwiftStorage, name]}
329 type: OS::TripleO::SoftwareDeployment
331 name: NetworkDeployment
332 config: {get_resource: NetworkConfig}
333 server: {get_resource: SwiftStorage}
334 actions: {get_param: NetworkDeploymentActions}
336 SwiftStorageUpgradeInitConfig:
337 type: OS::Heat::SoftwareConfig
343 - - "#!/bin/bash\n\n"
344 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
345 - get_param: UpgradeInitCommand
347 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
348 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
349 SwiftStorageUpgradeInitDeployment:
350 type: OS::Heat::SoftwareDeployment
351 depends_on: NetworkDeployment
353 name: SwiftStorageUpgradeInitDeployment
354 server: {get_resource: SwiftStorage}
355 config: {get_resource: SwiftStorageUpgradeInitConfig}
357 SwiftStorageHieraConfig:
358 type: OS::Heat::StructuredConfig
364 - heat_config_%{::deploy_config_name}
370 - bootstrap_node # provided by allNodesConfig
371 - all_nodes # provided by allNodesConfig
372 - vip_data # provided by allNodesConfig
374 merge_behavior: deeper
377 service_names: {get_param: ServiceNames}
378 sensu::subscriptions: {get_param: MonitoringSubscriptions}
381 - {get_param: ServiceConfigSettings}
382 - values: {get_attr: [NetIpMap, net_ip_map]}
383 object_extraconfig: {get_param: ObjectStorageExtraConfig}
384 extraconfig: {get_param: ExtraConfig}
386 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
387 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
388 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
389 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
390 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
391 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
392 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
394 SwiftStorageHieraDeploy:
395 type: OS::Heat::StructuredDeployment
396 depends_on: SwiftStorageUpgradeInitDeployment
398 name: SwiftStorageHieraDeploy
399 server: {get_resource: SwiftStorage}
400 config: {get_resource: SwiftStorageHieraConfig}
402 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
404 # Resource for site-specific injection of root certificate
406 depends_on: SwiftStorageHieraDeploy
407 type: OS::TripleO::NodeTLSCAData
409 server: {get_resource: SwiftStorage}
411 # Hook for site-specific additional pre-deployment config,
412 # applying to all nodes, e.g node registration/unregistration
414 depends_on: NodeTLSCAData
415 type: OS::TripleO::NodeExtraConfig
417 server: {get_resource: SwiftStorage}
420 type: OS::TripleO::Tasks::PackageUpdate
423 type: OS::Heat::SoftwareDeployment
425 config: {get_resource: UpdateConfig}
426 server: {get_resource: SwiftStorage}
429 get_param: UpdateIdentifier
433 description: IP address of the server in the ctlplane network
434 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
436 description: Hostname of the server
437 value: {get_attr: [SwiftStorage, name]}
439 description: Mapping of network names to hostnames
441 external: {get_attr: [NetHostMap, value, external, fqdn]}
442 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
443 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
444 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
445 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
446 management: {get_attr: [NetHostMap, value, management, fqdn]}
447 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
452 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
453 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
454 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
455 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
456 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
457 TENANTIP TENANTHOST.DOMAIN TENANTHOST
458 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
459 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
461 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
462 DOMAIN: {get_param: CloudDomain}
463 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
464 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
465 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
466 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
467 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
468 STORAGEIP: {get_attr: [StoragePort, ip_address]}
469 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
470 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
471 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
472 TENANTIP: {get_attr: [TenantPort, ip_address]}
473 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
474 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
475 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
476 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
477 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
478 nova_server_resource:
479 description: Heat resource handle for the swift storage server
481 {get_resource: SwiftStorage}
483 description: IP address of the server in the external network
484 value: {get_attr: [ExternalPort, ip_address]}
485 internal_api_ip_address:
486 description: IP address of the server in the internal_api network
487 value: {get_attr: [InternalApiPort, ip_address]}
489 description: IP address of the server in the storage network
490 value: {get_attr: [StoragePort, ip_address]}
491 storage_mgmt_ip_address:
492 description: IP address of the server in the storage_mgmt network
493 value: {get_attr: [StorageMgmtPort, ip_address]}
495 description: IP address of the server in the tenant network
496 value: {get_attr: [TenantPort, ip_address]}
497 management_ip_address:
498 description: IP address of the server in the management network
499 value: {get_attr: [ManagementPort, ip_address]}