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
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
129 type: OS::TripleO::Server
132 command: {get_param: ConfigCommand}
135 {get_param: BlockStorageImage}
136 flavor: {get_param: OvercloudBlockStorageFlavor}
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: BlockStorageServerMetadata}
151 - {get_param: ServiceMetadataSettings}
152 scheduler_hints: {get_param: BlockStorageSchedulerHints}
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::BlockStorage::NodeUserData
182 type: OS::TripleO::BlockStorage::Ports::ExternalPort
184 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
185 IPPool: {get_param: BlockStorageIPs}
186 NodeIndex: {get_param: NodeIndex}
189 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
191 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
192 IPPool: {get_param: BlockStorageIPs}
193 NodeIndex: {get_param: NodeIndex}
196 type: OS::TripleO::BlockStorage::Ports::StoragePort
198 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
199 IPPool: {get_param: BlockStorageIPs}
200 NodeIndex: {get_param: NodeIndex}
203 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
205 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
206 IPPool: {get_param: BlockStorageIPs}
207 NodeIndex: {get_param: NodeIndex}
210 type: OS::TripleO::BlockStorage::Ports::TenantPort
212 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
213 IPPool: {get_param: BlockStorageIPs}
214 NodeIndex: {get_param: NodeIndex}
217 type: OS::TripleO::BlockStorage::Ports::ManagementPort
219 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
220 IPPool: {get_param: BlockStorageIPs}
221 NodeIndex: {get_param: NodeIndex}
224 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
226 ControlPlaneIp: {get_attr: [BlockStorage, 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: [BlockStorage, 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: [BlockStorage, name]}
268 - {get_param: CloudDomain}
272 - - {get_attr: [BlockStorage, name]}
278 - - {get_attr: [BlockStorage, name]}
280 - {get_param: CloudDomain}
284 - - {get_attr: [BlockStorage, name]}
290 - - {get_attr: [BlockStorage, name]}
292 - {get_param: CloudDomain}
296 - - {get_attr: [BlockStorage, name]}
302 - - {get_attr: [BlockStorage, name]}
304 - {get_param: CloudDomain}
308 - - {get_attr: [BlockStorage, name]}
314 - - {get_attr: [BlockStorage, name]}
316 - {get_param: CloudDomain}
320 - - {get_attr: [BlockStorage, name]}
326 - - {get_attr: [BlockStorage, name]}
328 - {get_param: CloudDomain}
332 - - {get_attr: [BlockStorage, name]}
338 - - {get_attr: [BlockStorage, name]}
340 - {get_param: CloudDomain}
344 - - {get_attr: [BlockStorage, name]}
348 type: OS::TripleO::BlockStorage::PreNetworkConfig
350 server: {get_resource: BlockStorage}
353 type: OS::TripleO::SoftwareDeployment
354 depends_on: PreNetworkConfig
356 name: NetworkDeployment
357 config: {get_resource: NetworkConfig}
358 server: {get_resource: BlockStorage}
359 actions: {get_param: NetworkDeploymentActions}
361 BlockStorageUpgradeInitConfig:
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 BlockStorageUpgradeInitDeployment:
376 type: OS::Heat::SoftwareDeployment
377 depends_on: NetworkDeployment
379 name: BlockStorageUpgradeInitDeployment
380 server: {get_resource: BlockStorage}
381 config: {get_resource: BlockStorageUpgradeInitConfig}
383 BlockStorageDeployment:
384 type: OS::Heat::StructuredDeployment
385 depends_on: BlockStorageUpgradeInitDeployment
387 name: BlockStorageDeployment
388 server: {get_resource: BlockStorage}
389 config: {get_resource: BlockStorageConfig}
391 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
393 # Map heat metadata into hiera datafiles
395 type: OS::Heat::StructuredConfig
401 - heat_config_%{::deploy_config_name}
407 - bootstrap_node # provided by allNodesConfig
408 - all_nodes # provided by allNodesConfig
409 - vip_data # provided by allNodesConfig
411 merge_behavior: deeper
414 service_names: {get_param: ServiceNames}
415 sensu::subscriptions: {get_param: MonitoringSubscriptions}
418 - {get_param: ServiceConfigSettings}
419 - values: {get_attr: [NetIpMap, net_ip_map]}
420 volume_extraconfig: {get_param: BlockStorageExtraConfig}
421 extraconfig: {get_param: ExtraConfig}
423 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
424 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
425 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
426 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
427 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
428 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
429 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
431 # Resource for site-specific injection of root certificate
433 depends_on: BlockStorageDeployment
434 type: OS::TripleO::NodeTLSCAData
436 server: {get_resource: BlockStorage}
438 # Hook for site-specific additional pre-deployment config,
439 # applying to all nodes, e.g node registration/unregistration
441 depends_on: NodeTLSCAData
442 type: OS::TripleO::NodeExtraConfig
444 server: {get_resource: BlockStorage}
447 type: OS::TripleO::Tasks::PackageUpdate
450 type: OS::Heat::SoftwareDeployment
451 depends_on: NetworkDeployment
453 name: UpdateDeployment
454 config: {get_resource: UpdateConfig}
455 server: {get_resource: BlockStorage}
458 get_param: UpdateIdentifier
462 description: IP address of the server in the ctlplane network
463 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
465 description: Hostname of the server
466 value: {get_attr: [BlockStorage, name]}
468 description: Mapping of network names to hostnames
470 external: {get_attr: [NetHostMap, value, external, fqdn]}
471 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
472 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
473 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
474 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
475 management: {get_attr: [NetHostMap, value, management, fqdn]}
476 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
481 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
482 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
483 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
484 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
485 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
486 TENANTIP TENANTHOST.DOMAIN TENANTHOST
487 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
488 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
490 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
491 DOMAIN: {get_param: CloudDomain}
492 PRIMARYHOST: {get_attr: [BlockStorage, name]}
493 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
494 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
495 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
496 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
497 STORAGEIP: {get_attr: [StoragePort, ip_address]}
498 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
499 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
500 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
501 TENANTIP: {get_attr: [TenantPort, ip_address]}
502 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
503 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
504 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
505 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
506 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
507 nova_server_resource:
508 description: Heat resource handle for the block storage server
510 {get_resource: BlockStorage}
512 description: IP address of the server in the external network
513 value: {get_attr: [ExternalPort, ip_address]}
514 internal_api_ip_address:
515 description: IP address of the server in the internal_api network
516 value: {get_attr: [InternalApiPort, ip_address]}
518 description: IP address of the server in the storage network
519 value: {get_attr: [StoragePort, ip_address]}
520 storage_mgmt_ip_address:
521 description: IP address of the server in the storage_mgmt network
522 value: {get_attr: [StorageMgmtPort, ip_address]}
524 description: IP address of the server in the tenant network
525 value: {get_attr: [TenantPort, ip_address]}
526 management_ip_address:
527 description: IP address of the server in the management network
528 value: {get_attr: [ManagementPort, ip_address]}