1 heat_template_version: 2016-10-14
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::SoftwareDeployment
342 name: NetworkDeployment
343 config: {get_resource: NetworkConfig}
344 server: {get_resource: BlockStorage}
345 actions: {get_param: NetworkDeploymentActions}
347 BlockStorageUpgradeInitConfig:
348 type: OS::Heat::SoftwareConfig
354 - - "#!/bin/bash\n\n"
355 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
356 - get_param: UpgradeInitCommand
358 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
359 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
360 BlockStorageUpgradeInitDeployment:
361 type: OS::Heat::SoftwareDeployment
362 depends_on: NetworkDeployment
364 name: BlockStorageUpgradeInitDeployment
365 server: {get_resource: BlockStorage}
366 config: {get_resource: BlockStorageUpgradeInitConfig}
368 BlockStorageDeployment:
369 type: OS::Heat::StructuredDeployment
370 depends_on: BlockStorageUpgradeInitDeployment
372 name: BlockStorageDeployment
373 server: {get_resource: BlockStorage}
374 config: {get_resource: BlockStorageConfig}
376 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
378 # Map heat metadata into hiera datafiles
380 type: OS::Heat::StructuredConfig
386 - heat_config_%{::deploy_config_name}
392 - bootstrap_node # provided by allNodesConfig
393 - all_nodes # provided by allNodesConfig
394 - vip_data # provided by allNodesConfig
396 merge_behavior: deeper
399 service_names: {get_param: ServiceNames}
400 sensu::subscriptions: {get_param: MonitoringSubscriptions}
403 - {get_param: ServiceConfigSettings}
404 - values: {get_attr: [NetIpMap, net_ip_map]}
405 volume_extraconfig: {get_param: BlockStorageExtraConfig}
406 extraconfig: {get_param: ExtraConfig}
408 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
409 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
410 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
411 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
412 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
413 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
414 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
416 # Resource for site-specific injection of root certificate
418 depends_on: BlockStorageDeployment
419 type: OS::TripleO::NodeTLSCAData
421 server: {get_resource: BlockStorage}
423 # Hook for site-specific additional pre-deployment config,
424 # applying to all nodes, e.g node registration/unregistration
426 depends_on: NodeTLSCAData
427 type: OS::TripleO::NodeExtraConfig
429 server: {get_resource: BlockStorage}
432 type: OS::TripleO::Tasks::PackageUpdate
435 type: OS::Heat::SoftwareDeployment
437 name: UpdateDeployment
438 config: {get_resource: UpdateConfig}
439 server: {get_resource: BlockStorage}
442 get_param: UpdateIdentifier
446 description: IP address of the server in the ctlplane network
447 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
449 description: Hostname of the server
450 value: {get_attr: [BlockStorage, name]}
452 description: Mapping of network names to hostnames
454 external: {get_attr: [NetHostMap, value, external, fqdn]}
455 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
456 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
457 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
458 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
459 management: {get_attr: [NetHostMap, value, management, fqdn]}
460 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
465 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
466 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
467 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
468 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
469 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
470 TENANTIP TENANTHOST.DOMAIN TENANTHOST
471 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
472 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
474 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
475 DOMAIN: {get_param: CloudDomain}
476 PRIMARYHOST: {get_attr: [BlockStorage, name]}
477 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
478 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
479 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
480 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
481 STORAGEIP: {get_attr: [StoragePort, ip_address]}
482 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
483 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
484 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
485 TENANTIP: {get_attr: [TenantPort, ip_address]}
486 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
487 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
488 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
489 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
490 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
491 nova_server_resource:
492 description: Heat resource handle for the block storage server
494 {get_resource: BlockStorage}
496 description: IP address of the server in the external network
497 value: {get_attr: [ExternalPort, ip_address]}
498 internal_api_ip_address:
499 description: IP address of the server in the internal_api network
500 value: {get_attr: [InternalApiPort, ip_address]}
502 description: IP address of the server in the storage network
503 value: {get_attr: [StoragePort, ip_address]}
504 storage_mgmt_ip_address:
505 description: IP address of the server in the storage_mgmt network
506 value: {get_attr: [StorageMgmtPort, ip_address]}
508 description: IP address of the server in the tenant network
509 value: {get_attr: [TenantPort, ip_address]}
510 management_ip_address:
511 description: IP address of the server in the management network
512 value: {get_attr: [ManagementPort, ip_address]}