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.
121 type: OS::TripleO::Server
124 command: {get_param: ConfigCommand}
127 {get_param: BlockStorageImage}
128 flavor: {get_param: OvercloudBlockStorageFlavor}
129 key_name: {get_param: KeyName}
132 user_data_format: SOFTWARE_CONFIG
133 user_data: {get_resource: UserData}
136 template: {get_param: Hostname}
137 params: {get_param: HostnameMap}
138 software_config_transport: {get_param: SoftwareConfigTransport}
141 - {get_param: ServerMetadata}
142 - {get_param: BlockStorageServerMetadata}
143 - {get_param: ServiceMetadataSettings}
144 scheduler_hints: {get_param: BlockStorageSchedulerHints}
146 # Combine the NodeAdminUserData and NodeUserData mime archives
148 type: OS::Heat::MultipartMime
151 - config: {get_resource: NodeAdminUserData}
153 - config: {get_resource: NodeUserData}
155 - config: {get_resource: RoleUserData}
158 # Creates the "heat-admin" user if configured via the environment
159 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
161 type: OS::TripleO::NodeAdminUserData
163 # For optional operator additional userdata
164 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
166 type: OS::TripleO::NodeUserData
168 # For optional operator role-specific userdata
169 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
171 type: OS::TripleO::BlockStorage::NodeUserData
174 type: OS::TripleO::BlockStorage::Ports::ExternalPort
176 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
177 IPPool: {get_param: BlockStorageIPs}
178 NodeIndex: {get_param: NodeIndex}
181 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
183 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
184 IPPool: {get_param: BlockStorageIPs}
185 NodeIndex: {get_param: NodeIndex}
188 type: OS::TripleO::BlockStorage::Ports::StoragePort
190 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
191 IPPool: {get_param: BlockStorageIPs}
192 NodeIndex: {get_param: NodeIndex}
195 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
197 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
198 IPPool: {get_param: BlockStorageIPs}
199 NodeIndex: {get_param: NodeIndex}
202 type: OS::TripleO::BlockStorage::Ports::TenantPort
204 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
205 IPPool: {get_param: BlockStorageIPs}
206 NodeIndex: {get_param: NodeIndex}
209 type: OS::TripleO::BlockStorage::Ports::ManagementPort
211 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
212 IPPool: {get_param: BlockStorageIPs}
213 NodeIndex: {get_param: NodeIndex}
216 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
218 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
219 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
220 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
221 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
222 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
223 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
224 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
227 type: OS::TripleO::Network::Ports::NetIpMap
229 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
230 ExternalIp: {get_attr: [ExternalPort, ip_address]}
231 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
232 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
233 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
234 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
235 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
236 StorageIp: {get_attr: [StoragePort, ip_address]}
237 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
238 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
239 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
240 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
241 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
242 TenantIp: {get_attr: [TenantPort, ip_address]}
243 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
244 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
245 ManagementIp: {get_attr: [ManagementPort, ip_address]}
246 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
247 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
250 type: OS::Heat::Value
258 - - {get_attr: [BlockStorage, name]}
260 - {get_param: CloudDomain}
264 - - {get_attr: [BlockStorage, name]}
270 - - {get_attr: [BlockStorage, name]}
272 - {get_param: CloudDomain}
276 - - {get_attr: [BlockStorage, name]}
282 - - {get_attr: [BlockStorage, name]}
284 - {get_param: CloudDomain}
288 - - {get_attr: [BlockStorage, name]}
294 - - {get_attr: [BlockStorage, name]}
296 - {get_param: CloudDomain}
300 - - {get_attr: [BlockStorage, name]}
306 - - {get_attr: [BlockStorage, name]}
308 - {get_param: CloudDomain}
312 - - {get_attr: [BlockStorage, name]}
318 - - {get_attr: [BlockStorage, name]}
320 - {get_param: CloudDomain}
324 - - {get_attr: [BlockStorage, name]}
330 - - {get_attr: [BlockStorage, name]}
332 - {get_param: CloudDomain}
336 - - {get_attr: [BlockStorage, name]}
340 type: OS::TripleO::BlockStorage::PreNetworkConfig
342 server: {get_resource: BlockStorage}
345 type: OS::TripleO::SoftwareDeployment
346 depends_on: PreNetworkConfig
348 name: NetworkDeployment
349 config: {get_resource: NetworkConfig}
350 server: {get_resource: BlockStorage}
351 actions: {get_param: NetworkDeploymentActions}
353 BlockStorageUpgradeInitConfig:
354 type: OS::Heat::SoftwareConfig
360 - - "#!/bin/bash\n\n"
361 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
362 - get_param: UpgradeInitCommand
364 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
365 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
366 BlockStorageUpgradeInitDeployment:
367 type: OS::Heat::SoftwareDeployment
368 depends_on: NetworkDeployment
370 name: BlockStorageUpgradeInitDeployment
371 server: {get_resource: BlockStorage}
372 config: {get_resource: BlockStorageUpgradeInitConfig}
374 BlockStorageDeployment:
375 type: OS::Heat::StructuredDeployment
376 depends_on: BlockStorageUpgradeInitDeployment
378 name: BlockStorageDeployment
379 server: {get_resource: BlockStorage}
380 config: {get_resource: BlockStorageConfig}
382 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
384 # Map heat metadata into hiera datafiles
386 type: OS::Heat::StructuredConfig
392 - heat_config_%{::deploy_config_name}
398 - bootstrap_node # provided by allNodesConfig
399 - all_nodes # provided by allNodesConfig
400 - vip_data # provided by allNodesConfig
402 merge_behavior: deeper
405 service_names: {get_param: ServiceNames}
406 sensu::subscriptions: {get_param: MonitoringSubscriptions}
409 - {get_param: ServiceConfigSettings}
410 - values: {get_attr: [NetIpMap, net_ip_map]}
411 volume_extraconfig: {get_param: BlockStorageExtraConfig}
412 extraconfig: {get_param: ExtraConfig}
414 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
415 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
416 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
417 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
418 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
419 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
420 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
422 # Resource for site-specific injection of root certificate
424 depends_on: BlockStorageDeployment
425 type: OS::TripleO::NodeTLSCAData
427 server: {get_resource: BlockStorage}
429 # Hook for site-specific additional pre-deployment config,
430 # applying to all nodes, e.g node registration/unregistration
432 depends_on: NodeTLSCAData
433 type: OS::TripleO::NodeExtraConfig
435 server: {get_resource: BlockStorage}
438 type: OS::TripleO::Tasks::PackageUpdate
441 type: OS::Heat::SoftwareDeployment
443 name: UpdateDeployment
444 config: {get_resource: UpdateConfig}
445 server: {get_resource: BlockStorage}
448 get_param: UpdateIdentifier
452 description: IP address of the server in the ctlplane network
453 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
455 description: Hostname of the server
456 value: {get_attr: [BlockStorage, name]}
458 description: Mapping of network names to hostnames
460 external: {get_attr: [NetHostMap, value, external, fqdn]}
461 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
462 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
463 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
464 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
465 management: {get_attr: [NetHostMap, value, management, fqdn]}
466 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
471 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
472 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
473 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
474 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
475 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
476 TENANTIP TENANTHOST.DOMAIN TENANTHOST
477 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
478 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
480 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
481 DOMAIN: {get_param: CloudDomain}
482 PRIMARYHOST: {get_attr: [BlockStorage, name]}
483 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
484 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
485 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
486 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
487 STORAGEIP: {get_attr: [StoragePort, ip_address]}
488 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
489 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
490 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
491 TENANTIP: {get_attr: [TenantPort, ip_address]}
492 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
493 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
494 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
495 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
496 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
497 nova_server_resource:
498 description: Heat resource handle for the block storage server
500 {get_resource: BlockStorage}
502 description: IP address of the server in the external network
503 value: {get_attr: [ExternalPort, ip_address]}
504 internal_api_ip_address:
505 description: IP address of the server in the internal_api network
506 value: {get_attr: [InternalApiPort, ip_address]}
508 description: IP address of the server in the storage network
509 value: {get_attr: [StoragePort, ip_address]}
510 storage_mgmt_ip_address:
511 description: IP address of the server in the storage_mgmt network
512 value: {get_attr: [StorageMgmtPort, ip_address]}
514 description: IP address of the server in the tenant network
515 value: {get_attr: [TenantPort, ip_address]}
516 management_ip_address:
517 description: IP address of the server in the management network
518 value: {get_attr: [ManagementPort, ip_address]}