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
113 type: OS::Nova::Server
116 command: {get_param: ConfigCommand}
118 image: {get_param: SwiftStorageImage}
119 flavor: {get_param: OvercloudSwiftStorageFlavor}
120 key_name: {get_param: KeyName}
123 user_data_format: SOFTWARE_CONFIG
124 user_data: {get_resource: UserData}
127 template: {get_param: Hostname}
128 params: {get_param: HostnameMap}
129 software_config_transport: {get_param: SoftwareConfigTransport}
132 - {get_param: ServerMetadata}
133 - {get_param: SwiftStorageServerMetadata}
134 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
136 # Combine the NodeAdminUserData and NodeUserData mime archives
138 type: OS::Heat::MultipartMime
141 - config: {get_resource: NodeAdminUserData}
143 - config: {get_resource: NodeUserData}
145 - config: {get_resource: RoleUserData}
148 # Creates the "heat-admin" user if configured via the environment
149 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
151 type: OS::TripleO::NodeAdminUserData
153 # For optional operator additional userdata
154 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
156 type: OS::TripleO::NodeUserData
158 # For optional operator role-specific userdata
159 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
161 type: OS::TripleO::ObjectStorage::NodeUserData
164 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
166 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: SwiftStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
173 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: SwiftStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::SwiftStorage::Ports::StoragePort
180 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
181 IPPool: {get_param: SwiftStorageIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
187 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
188 IPPool: {get_param: SwiftStorageIPs}
189 NodeIndex: {get_param: NodeIndex}
192 type: OS::TripleO::SwiftStorage::Ports::TenantPort
194 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
195 IPPool: {get_param: SwiftStorageIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
201 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
202 IPPool: {get_param: SwiftStorageIPs}
203 NodeIndex: {get_param: NodeIndex}
206 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
208 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
209 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
210 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
211 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
212 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
213 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
214 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
217 type: OS::TripleO::Network::Ports::NetIpMap
219 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
220 ExternalIp: {get_attr: [ExternalPort, ip_address]}
221 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
222 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
223 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
224 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
225 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
226 StorageIp: {get_attr: [StoragePort, ip_address]}
227 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
228 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
229 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
230 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
231 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
232 TenantIp: {get_attr: [TenantPort, ip_address]}
233 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
234 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
235 ManagementIp: {get_attr: [ManagementPort, ip_address]}
236 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
237 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
240 type: OS::Heat::Value
248 - - {get_attr: [SwiftStorage, name]}
250 - {get_param: CloudDomain}
254 - - {get_attr: [SwiftStorage, name]}
260 - - {get_attr: [SwiftStorage, name]}
262 - {get_param: CloudDomain}
266 - - {get_attr: [SwiftStorage, name]}
272 - - {get_attr: [SwiftStorage, name]}
274 - {get_param: CloudDomain}
278 - - {get_attr: [SwiftStorage, name]}
284 - - {get_attr: [SwiftStorage, name]}
286 - {get_param: CloudDomain}
290 - - {get_attr: [SwiftStorage, name]}
296 - - {get_attr: [SwiftStorage, name]}
298 - {get_param: CloudDomain}
302 - - {get_attr: [SwiftStorage, name]}
308 - - {get_attr: [SwiftStorage, name]}
310 - {get_param: CloudDomain}
314 - - {get_attr: [SwiftStorage, name]}
320 - - {get_attr: [SwiftStorage, name]}
322 - {get_param: CloudDomain}
326 - - {get_attr: [SwiftStorage, name]}
330 type: OS::TripleO::SoftwareDeployment
332 name: NetworkDeployment
333 config: {get_resource: NetworkConfig}
334 server: {get_resource: SwiftStorage}
335 actions: {get_param: NetworkDeploymentActions}
337 SwiftStorageHieraConfig:
338 type: OS::Heat::StructuredConfig
344 - heat_config_%{::deploy_config_name}
350 - bootstrap_node # provided by allNodesConfig
351 - all_nodes # provided by allNodesConfig
352 - vip_data # provided by allNodesConfig
354 merge_behavior: deeper
357 service_names: {get_param: ServiceNames}
358 sensu::subscriptions: {get_param: MonitoringSubscriptions}
361 - {get_param: ServiceConfigSettings}
362 - values: {get_attr: [NetIpMap, net_ip_map]}
363 object_extraconfig: {get_param: ObjectStorageExtraConfig}
364 extraconfig: {get_param: ExtraConfig}
366 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
367 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
368 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
369 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
370 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
371 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
372 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
374 SwiftStorageHieraDeploy:
375 type: OS::Heat::StructuredDeployment
376 depends_on: NetworkDeployment
378 name: SwiftStorageHieraDeploy
379 server: {get_resource: SwiftStorage}
380 config: {get_resource: SwiftStorageHieraConfig}
382 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
384 # Resource for site-specific injection of root certificate
386 depends_on: SwiftStorageHieraDeploy
387 type: OS::TripleO::NodeTLSCAData
389 server: {get_resource: SwiftStorage}
391 # Hook for site-specific additional pre-deployment config,
392 # applying to all nodes, e.g node registration/unregistration
394 depends_on: NodeTLSCAData
395 type: OS::TripleO::NodeExtraConfig
397 server: {get_resource: SwiftStorage}
400 type: OS::TripleO::Tasks::PackageUpdate
403 type: OS::Heat::SoftwareDeployment
405 config: {get_resource: UpdateConfig}
406 server: {get_resource: SwiftStorage}
409 get_param: UpdateIdentifier
413 description: IP address of the server in the ctlplane network
414 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
416 description: Hostname of the server
417 value: {get_attr: [SwiftStorage, name]}
419 description: Mapping of network names to hostnames
421 external: {get_attr: [NetHostMap, value, external, fqdn]}
422 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
423 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
424 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
425 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
426 management: {get_attr: [NetHostMap, value, management, fqdn]}
427 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
432 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
433 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
434 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
435 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
436 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
437 TENANTIP TENANTHOST.DOMAIN TENANTHOST
438 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
439 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
441 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
442 DOMAIN: {get_param: CloudDomain}
443 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
444 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
445 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
446 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
447 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
448 STORAGEIP: {get_attr: [StoragePort, ip_address]}
449 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
450 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
451 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
452 TENANTIP: {get_attr: [TenantPort, ip_address]}
453 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
454 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
455 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
456 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
457 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
458 nova_server_resource:
459 description: Heat resource handle for the swift storage server
461 {get_resource: SwiftStorage}
463 description: IP address of the server in the external network
464 value: {get_attr: [ExternalPort, ip_address]}
465 internal_api_ip_address:
466 description: IP address of the server in the internal_api network
467 value: {get_attr: [InternalApiPort, ip_address]}
469 description: IP address of the server in the storage network
470 value: {get_attr: [StoragePort, ip_address]}
471 storage_mgmt_ip_address:
472 description: IP address of the server in the storage_mgmt network
473 value: {get_attr: [StorageMgmtPort, ip_address]}
475 description: IP address of the server in the tenant network
476 value: {get_attr: [TenantPort, ip_address]}
477 management_ip_address:
478 description: IP address of the server in the management network
479 value: {get_attr: [ManagementPort, ip_address]}