1 heat_template_version: ocata
2 description: 'OpenStack cinder storage configured by Puppet'
5 default: overcloud-full
8 - custom_constraint: glance.image
12 Additional hiera configuration to inject into the cluster. Note
13 that BlockStorageExtraConfig takes precedence over ExtraConfig.
15 BlockStorageExtraConfig:
18 Role specific additional hiera configuration to inject into the cluster.
23 OvercloudBlockStorageFlavor:
24 description: Flavor for block storage nodes to request when deploying.
28 - custom_constraint: nova.flavor
31 description: Name of an existing Nova key pair to enable SSH access to the instances
37 Setting to a previously unused value during stack-update will trigger
38 package update on all nodes
41 default: '' # Defaults to Heat created hostname
45 description: Optional mapping to override hostnames
48 description: Mapping of service_name -> network name. Typically set
49 via parameter_defaults in the resource registry.
53 description: Mapping of service endpoint -> protocol. Typically set
54 via parameter_defaults in the resource registry.
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 BlockStorageServerMetadata:
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 BlockStorageSchedulerHints:
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
116 Maximum amount of time to possibly to delay configuation collection
117 polling. Defaults to 30 seconds. Set to 0 to disable it which will cause
118 the configuration collection to occur as soon as the collection process
119 starts. This setting is used to prevent the configuration collection
120 processes from polling all at the exact same time.
124 Command or script snippet to run on all overcloud nodes to
125 initialize the upgrade process. E.g. a repository switch.
127 UpgradeInitCommonCommand:
130 Common commands required by the upgrades process. This should not
131 normally be modified by the operator and is set and unset in the
132 major-upgrade-composable-steps.yaml and major-upgrade-converge.yaml
138 type: OS::TripleO::Server
141 command: {get_param: ConfigCommand}
142 splay: {get_param: ConfigCollectSplay}
145 {get_param: BlockStorageImage}
146 flavor: {get_param: OvercloudBlockStorageFlavor}
147 key_name: {get_param: KeyName}
150 user_data_format: SOFTWARE_CONFIG
151 user_data: {get_resource: UserData}
154 template: {get_param: Hostname}
155 params: {get_param: HostnameMap}
156 software_config_transport: {get_param: SoftwareConfigTransport}
159 - {get_param: ServerMetadata}
160 - {get_param: BlockStorageServerMetadata}
161 - {get_param: ServiceMetadataSettings}
162 scheduler_hints: {get_param: BlockStorageSchedulerHints}
164 # Combine the NodeAdminUserData and NodeUserData mime archives
166 type: OS::Heat::MultipartMime
169 - config: {get_resource: NodeAdminUserData}
171 - config: {get_resource: NodeUserData}
173 - config: {get_resource: RoleUserData}
176 # Creates the "heat-admin" user if configured via the environment
177 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
179 type: OS::TripleO::NodeAdminUserData
181 # For optional operator additional userdata
182 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
184 type: OS::TripleO::NodeUserData
186 # For optional operator role-specific userdata
187 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
189 type: OS::TripleO::BlockStorage::NodeUserData
192 type: OS::TripleO::BlockStorage::Ports::ExternalPort
194 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
195 IPPool: {get_param: BlockStorageIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
201 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
202 IPPool: {get_param: BlockStorageIPs}
203 NodeIndex: {get_param: NodeIndex}
206 type: OS::TripleO::BlockStorage::Ports::StoragePort
208 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
209 IPPool: {get_param: BlockStorageIPs}
210 NodeIndex: {get_param: NodeIndex}
213 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
215 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
216 IPPool: {get_param: BlockStorageIPs}
217 NodeIndex: {get_param: NodeIndex}
220 type: OS::TripleO::BlockStorage::Ports::TenantPort
222 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
223 IPPool: {get_param: BlockStorageIPs}
224 NodeIndex: {get_param: NodeIndex}
227 type: OS::TripleO::BlockStorage::Ports::ManagementPort
229 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
230 IPPool: {get_param: BlockStorageIPs}
231 NodeIndex: {get_param: NodeIndex}
234 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
236 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
237 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
238 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
239 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
240 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
241 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
242 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
245 type: OS::TripleO::Network::Ports::NetIpMap
247 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
248 ExternalIp: {get_attr: [ExternalPort, ip_address]}
249 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
250 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
251 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
252 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
253 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
254 StorageIp: {get_attr: [StoragePort, ip_address]}
255 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
256 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
257 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
258 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
259 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
260 TenantIp: {get_attr: [TenantPort, ip_address]}
261 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
262 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
263 ManagementIp: {get_attr: [ManagementPort, ip_address]}
264 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
265 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
268 type: OS::Heat::Value
276 - - {get_attr: [BlockStorage, name]}
278 - {get_param: CloudDomain}
282 - - {get_attr: [BlockStorage, name]}
288 - - {get_attr: [BlockStorage, name]}
290 - {get_param: CloudDomain}
294 - - {get_attr: [BlockStorage, name]}
300 - - {get_attr: [BlockStorage, name]}
302 - {get_param: CloudDomain}
306 - - {get_attr: [BlockStorage, name]}
312 - - {get_attr: [BlockStorage, name]}
314 - {get_param: CloudDomain}
318 - - {get_attr: [BlockStorage, name]}
324 - - {get_attr: [BlockStorage, name]}
326 - {get_param: CloudDomain}
330 - - {get_attr: [BlockStorage, name]}
336 - - {get_attr: [BlockStorage, name]}
338 - {get_param: CloudDomain}
342 - - {get_attr: [BlockStorage, name]}
348 - - {get_attr: [BlockStorage, name]}
350 - {get_param: CloudDomain}
354 - - {get_attr: [BlockStorage, name]}
358 type: OS::TripleO::BlockStorage::PreNetworkConfig
360 server: {get_resource: BlockStorage}
363 type: OS::TripleO::SoftwareDeployment
364 depends_on: PreNetworkConfig
366 name: NetworkDeployment
367 config: {get_resource: NetworkConfig}
368 server: {get_resource: BlockStorage}
369 actions: {get_param: NetworkDeploymentActions}
371 BlockStorageUpgradeInitConfig:
372 type: OS::Heat::SoftwareConfig
378 - - "#!/bin/bash\n\n"
379 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
380 - get_param: UpgradeInitCommand
381 - get_param: UpgradeInitCommonCommand
383 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
384 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
385 BlockStorageUpgradeInitDeployment:
386 type: OS::Heat::SoftwareDeployment
387 depends_on: NetworkDeployment
389 name: BlockStorageUpgradeInitDeployment
390 server: {get_resource: BlockStorage}
391 config: {get_resource: BlockStorageUpgradeInitConfig}
393 BlockStorageDeployment:
394 type: OS::Heat::StructuredDeployment
395 depends_on: BlockStorageUpgradeInitDeployment
397 name: BlockStorageDeployment
398 server: {get_resource: BlockStorage}
399 config: {get_resource: BlockStorageConfig}
401 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
403 # Map heat metadata into hiera datafiles
405 type: OS::Heat::StructuredConfig
411 - heat_config_%{::deploy_config_name}
417 - bootstrap_node # provided by allNodesConfig
418 - all_nodes # provided by allNodesConfig
419 - vip_data # provided by allNodesConfig
421 merge_behavior: deeper
424 service_names: {get_param: ServiceNames}
425 sensu::subscriptions: {get_param: MonitoringSubscriptions}
428 - {get_param: ServiceConfigSettings}
429 - values: {get_attr: [NetIpMap, net_ip_map]}
430 volume_extraconfig: {get_param: BlockStorageExtraConfig}
431 extraconfig: {get_param: ExtraConfig}
433 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
434 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
435 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
436 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
437 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
438 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
439 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
441 # Resource for site-specific injection of root certificate
443 depends_on: BlockStorageDeployment
444 type: OS::TripleO::NodeTLSCAData
446 server: {get_resource: BlockStorage}
448 # Hook for site-specific additional pre-deployment config,
449 # applying to all nodes, e.g node registration/unregistration
451 depends_on: NodeTLSCAData
452 type: OS::TripleO::NodeExtraConfig
454 server: {get_resource: BlockStorage}
457 type: OS::TripleO::Tasks::PackageUpdate
460 type: OS::Heat::SoftwareDeployment
461 depends_on: NetworkDeployment
463 name: UpdateDeployment
464 config: {get_resource: UpdateConfig}
465 server: {get_resource: BlockStorage}
468 get_param: UpdateIdentifier
472 description: IP address of the server in the ctlplane network
473 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
475 description: Hostname of the server
476 value: {get_attr: [BlockStorage, name]}
478 description: Mapping of network names to hostnames
480 external: {get_attr: [NetHostMap, value, external, fqdn]}
481 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
482 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
483 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
484 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
485 management: {get_attr: [NetHostMap, value, management, fqdn]}
486 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
491 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
492 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
493 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
494 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
495 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
496 TENANTIP TENANTHOST.DOMAIN TENANTHOST
497 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
498 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
500 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
501 DOMAIN: {get_param: CloudDomain}
502 PRIMARYHOST: {get_attr: [BlockStorage, name]}
503 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
504 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
505 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
506 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
507 STORAGEIP: {get_attr: [StoragePort, ip_address]}
508 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
509 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
510 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
511 TENANTIP: {get_attr: [TenantPort, ip_address]}
512 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
513 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
514 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
515 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
516 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
517 nova_server_resource:
518 description: Heat resource handle for the block storage server
520 {get_resource: BlockStorage}
522 description: IP address of the server in the external network
523 value: {get_attr: [ExternalPort, ip_address]}
524 internal_api_ip_address:
525 description: IP address of the server in the internal_api network
526 value: {get_attr: [InternalApiPort, ip_address]}
528 description: IP address of the server in the storage network
529 value: {get_attr: [StoragePort, ip_address]}
530 storage_mgmt_ip_address:
531 description: IP address of the server in the storage_mgmt network
532 value: {get_attr: [StorageMgmtPort, ip_address]}
534 description: IP address of the server in the tenant network
535 value: {get_attr: [TenantPort, ip_address]}
536 management_ip_address:
537 description: IP address of the server in the management network
538 value: {get_attr: [ManagementPort, ip_address]}