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.
77 Extra properties or metadata passed to Nova for the created nodes in
78 the overcloud. It's accessible via the Nova metadata API.
80 ObjectStorageSchedulerHints:
82 description: Optional scheduler hints to pass to nova
87 ServiceConfigSettings:
91 type: comma_delimited_list
93 MonitoringSubscriptions:
94 type: comma_delimited_list
98 description: Command which will be run whenever configuration data changes
99 default: os-refresh-config --timeout 14400
104 type: OS::Nova::Server
107 command: {get_param: ConfigCommand}
109 image: {get_param: SwiftStorageImage}
110 flavor: {get_param: OvercloudSwiftStorageFlavor}
111 key_name: {get_param: KeyName}
114 user_data_format: SOFTWARE_CONFIG
115 user_data: {get_resource: UserData}
118 template: {get_param: Hostname}
119 params: {get_param: HostnameMap}
120 software_config_transport: {get_param: SoftwareConfigTransport}
121 metadata: {get_param: ServerMetadata}
122 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
124 # Combine the NodeAdminUserData and NodeUserData mime archives
126 type: OS::Heat::MultipartMime
129 - config: {get_resource: NodeAdminUserData}
131 - config: {get_resource: NodeUserData}
134 # Creates the "heat-admin" user if configured via the environment
135 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
137 type: OS::TripleO::NodeAdminUserData
139 # For optional operator additional userdata
140 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
142 type: OS::TripleO::NodeUserData
145 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
147 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
148 IPPool: {get_param: SwiftStorageIPs}
149 NodeIndex: {get_param: NodeIndex}
152 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
154 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
155 IPPool: {get_param: SwiftStorageIPs}
156 NodeIndex: {get_param: NodeIndex}
159 type: OS::TripleO::SwiftStorage::Ports::StoragePort
161 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
162 IPPool: {get_param: SwiftStorageIPs}
163 NodeIndex: {get_param: NodeIndex}
166 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
168 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
169 IPPool: {get_param: SwiftStorageIPs}
170 NodeIndex: {get_param: NodeIndex}
173 type: OS::TripleO::SwiftStorage::Ports::TenantPort
175 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
176 IPPool: {get_param: SwiftStorageIPs}
177 NodeIndex: {get_param: NodeIndex}
180 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
182 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
183 IPPool: {get_param: SwiftStorageIPs}
184 NodeIndex: {get_param: NodeIndex}
187 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
189 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
190 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
191 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
192 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
193 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
194 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
195 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
198 type: OS::TripleO::Network::Ports::NetIpMap
200 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
201 ExternalIp: {get_attr: [ExternalPort, ip_address]}
202 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
203 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
204 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
205 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
206 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
207 StorageIp: {get_attr: [StoragePort, ip_address]}
208 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
209 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
210 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
211 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
212 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
213 TenantIp: {get_attr: [TenantPort, ip_address]}
214 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
215 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
216 ManagementIp: {get_attr: [ManagementPort, ip_address]}
217 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
218 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
221 type: OS::Heat::Value
229 - - {get_attr: [Swiftexternal, name]}
231 - {get_param: CloudDomain}
235 - - {get_attr: [Swiftexternal, name]}
241 - - {get_attr: [SwiftStorage, name]}
243 - {get_param: CloudDomain}
247 - - {get_attr: [SwiftStorage, name]}
253 - - {get_attr: [SwiftStorage, name]}
255 - {get_param: CloudDomain}
259 - - {get_attr: [SwiftStorage, name]}
265 - - {get_attr: [SwiftStorage, name]}
267 - {get_param: CloudDomain}
271 - - {get_attr: [SwiftStorage, name]}
277 - - {get_attr: [SwiftStorage, name]}
279 - {get_param: CloudDomain}
283 - - {get_attr: [SwiftStorage, name]}
289 - - {get_attr: [SwiftStorage, name]}
291 - {get_param: CloudDomain}
295 - - {get_attr: [SwiftStorage, name]}
301 - - {get_attr: [SwiftStorage, name]}
303 - {get_param: CloudDomain}
307 - - {get_attr: [SwiftStorage, name]}
311 type: OS::TripleO::SoftwareDeployment
313 name: NetworkDeployment
314 config: {get_resource: NetworkConfig}
315 server: {get_resource: SwiftStorage}
316 actions: {get_param: NetworkDeploymentActions}
318 SwiftStorageHieraConfig:
319 type: OS::Heat::StructuredConfig
325 - heat_config_%{::deploy_config_name}
331 - bootstrap_node # provided by allNodesConfig
332 - all_nodes # provided by allNodesConfig
333 - vip_data # provided by allNodesConfig
335 merge_behavior: deeper
338 service_names: {get_param: ServiceNames}
339 sensu::subscriptions: {get_param: MonitoringSubscriptions}
342 - {get_param: ServiceConfigSettings}
343 - values: {get_attr: [NetIpMap, net_ip_map]}
344 object_extraconfig: {get_param: ObjectStorageExtraConfig}
345 extraconfig: {get_param: ExtraConfig}
347 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
348 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
349 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
350 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
351 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
352 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
353 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
355 SwiftStorageHieraDeploy:
356 type: OS::Heat::StructuredDeployment
357 depends_on: NetworkDeployment
359 name: SwiftStorageHieraDeploy
360 server: {get_resource: SwiftStorage}
361 config: {get_resource: SwiftStorageHieraConfig}
363 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
365 # Resource for site-specific injection of root certificate
367 depends_on: SwiftStorageHieraDeploy
368 type: OS::TripleO::NodeTLSCAData
370 server: {get_resource: SwiftStorage}
372 # Hook for site-specific additional pre-deployment config,
373 # applying to all nodes, e.g node registration/unregistration
375 depends_on: NodeTLSCAData
376 type: OS::TripleO::NodeExtraConfig
378 server: {get_resource: SwiftStorage}
381 type: OS::TripleO::Tasks::PackageUpdate
384 type: OS::Heat::SoftwareDeployment
386 config: {get_resource: UpdateConfig}
387 server: {get_resource: SwiftStorage}
390 get_param: UpdateIdentifier
394 description: IP address of the server in the ctlplane network
395 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
397 description: Hostname of the server
398 value: {get_attr: [SwiftStorage, name]}
400 description: Mapping of network names to hostnames
402 external: {get_attr: [NetHostMap, value, external, fqdn]}
403 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
404 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
405 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
406 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
407 management: {get_attr: [NetHostMap, value, management, fqdn]}
408 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
413 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
414 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
415 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
416 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
417 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
418 TENANTIP TENANTHOST.DOMAIN TENANTHOST
419 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
420 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
422 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
423 DOMAIN: {get_param: CloudDomain}
424 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
425 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
426 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
427 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
428 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
429 STORAGEIP: {get_attr: [StoragePort, ip_address]}
430 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
431 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
432 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
433 TENANTIP: {get_attr: [TenantPort, ip_address]}
434 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
435 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
436 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
437 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
438 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
439 nova_server_resource:
440 description: Heat resource handle for the swift storage server
442 {get_resource: SwiftStorage}
444 description: IP address of the server in the external network
445 value: {get_attr: [ExternalPort, ip_address]}
446 internal_api_ip_address:
447 description: IP address of the server in the internal_api network
448 value: {get_attr: [InternalApiPort, ip_address]}
450 description: IP address of the server in the storage network
451 value: {get_attr: [StoragePort, ip_address]}
452 storage_mgmt_ip_address:
453 description: IP address of the server in the storage_mgmt network
454 value: {get_attr: [StorageMgmtPort, ip_address]}
456 description: IP address of the server in the tenant network
457 value: {get_attr: [TenantPort, ip_address]}
458 management_ip_address:
459 description: IP address of the server in the management network
460 value: {get_attr: [ManagementPort, ip_address]}