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
452 name: UpdateDeployment
453 config: {get_resource: UpdateConfig}
454 server: {get_resource: BlockStorage}
457 get_param: UpdateIdentifier
461 description: IP address of the server in the ctlplane network
462 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
464 description: Hostname of the server
465 value: {get_attr: [BlockStorage, name]}
467 description: Mapping of network names to hostnames
469 external: {get_attr: [NetHostMap, value, external, fqdn]}
470 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
471 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
472 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
473 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
474 management: {get_attr: [NetHostMap, value, management, fqdn]}
475 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
480 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
481 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
482 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
483 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
484 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
485 TENANTIP TENANTHOST.DOMAIN TENANTHOST
486 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
487 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
489 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
490 DOMAIN: {get_param: CloudDomain}
491 PRIMARYHOST: {get_attr: [BlockStorage, name]}
492 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
493 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
494 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
495 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
496 STORAGEIP: {get_attr: [StoragePort, ip_address]}
497 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
498 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
499 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
500 TENANTIP: {get_attr: [TenantPort, ip_address]}
501 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
502 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
503 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
504 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
505 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
506 nova_server_resource:
507 description: Heat resource handle for the block storage server
509 {get_resource: BlockStorage}
511 description: IP address of the server in the external network
512 value: {get_attr: [ExternalPort, ip_address]}
513 internal_api_ip_address:
514 description: IP address of the server in the internal_api network
515 value: {get_attr: [InternalApiPort, ip_address]}
517 description: IP address of the server in the storage network
518 value: {get_attr: [StoragePort, ip_address]}
519 storage_mgmt_ip_address:
520 description: IP address of the server in the storage_mgmt network
521 value: {get_attr: [StorageMgmtPort, ip_address]}
523 description: IP address of the server in the tenant network
524 value: {get_attr: [TenantPort, ip_address]}
525 management_ip_address:
526 description: IP address of the server in the management network
527 value: {get_attr: [ManagementPort, ip_address]}