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
107 description: Command which will be run whenever configuration data changes
108 default: os-refresh-config --timeout 14400
112 type: OS::TripleO::Server
115 command: {get_param: ConfigCommand}
118 {get_param: BlockStorageImage}
119 flavor: {get_param: OvercloudBlockStorageFlavor}
120 key_name: {get_param: KeyName}
123 user_data_format: SOFTWARE_CONFIG
124 user_data: {get_resource: UserData}
127 template: {get_param: Hostname}
128 params: {get_param: HostnameMap}
129 software_config_transport: {get_param: SoftwareConfigTransport}
132 - {get_param: ServerMetadata}
133 - {get_param: BlockStorageServerMetadata}
134 scheduler_hints: {get_param: BlockStorageSchedulerHints}
136 # Combine the NodeAdminUserData and NodeUserData mime archives
138 type: OS::Heat::MultipartMime
141 - config: {get_resource: NodeAdminUserData}
143 - config: {get_resource: NodeUserData}
145 - config: {get_resource: RoleUserData}
148 # Creates the "heat-admin" user if configured via the environment
149 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
151 type: OS::TripleO::NodeAdminUserData
153 # For optional operator additional userdata
154 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
156 type: OS::TripleO::NodeUserData
158 # For optional operator role-specific userdata
159 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
161 type: OS::TripleO::BlockStorage::NodeUserData
164 type: OS::TripleO::BlockStorage::Ports::ExternalPort
166 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: BlockStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
173 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: BlockStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::BlockStorage::Ports::StoragePort
180 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
181 IPPool: {get_param: BlockStorageIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
187 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
188 IPPool: {get_param: BlockStorageIPs}
189 NodeIndex: {get_param: NodeIndex}
192 type: OS::TripleO::BlockStorage::Ports::TenantPort
194 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
195 IPPool: {get_param: BlockStorageIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::BlockStorage::Ports::ManagementPort
201 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
202 IPPool: {get_param: BlockStorageIPs}
203 NodeIndex: {get_param: NodeIndex}
206 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
208 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
209 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
210 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
211 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
212 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
213 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
214 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
217 type: OS::TripleO::Network::Ports::NetIpMap
219 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
220 ExternalIp: {get_attr: [ExternalPort, ip_address]}
221 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
222 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
223 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
224 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
225 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
226 StorageIp: {get_attr: [StoragePort, ip_address]}
227 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
228 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
229 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
230 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
231 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
232 TenantIp: {get_attr: [TenantPort, ip_address]}
233 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
234 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
235 ManagementIp: {get_attr: [ManagementPort, ip_address]}
236 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
237 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
240 type: OS::Heat::Value
248 - - {get_attr: [BlockStorage, name]}
250 - {get_param: CloudDomain}
254 - - {get_attr: [BlockStorage, name]}
260 - - {get_attr: [BlockStorage, name]}
262 - {get_param: CloudDomain}
266 - - {get_attr: [BlockStorage, name]}
272 - - {get_attr: [BlockStorage, name]}
274 - {get_param: CloudDomain}
278 - - {get_attr: [BlockStorage, name]}
284 - - {get_attr: [BlockStorage, name]}
286 - {get_param: CloudDomain}
290 - - {get_attr: [BlockStorage, name]}
296 - - {get_attr: [BlockStorage, name]}
298 - {get_param: CloudDomain}
302 - - {get_attr: [BlockStorage, name]}
308 - - {get_attr: [BlockStorage, name]}
310 - {get_param: CloudDomain}
314 - - {get_attr: [BlockStorage, name]}
320 - - {get_attr: [BlockStorage, name]}
322 - {get_param: CloudDomain}
326 - - {get_attr: [BlockStorage, name]}
330 type: OS::TripleO::SoftwareDeployment
332 name: NetworkDeployment
333 config: {get_resource: NetworkConfig}
334 server: {get_resource: BlockStorage}
335 actions: {get_param: NetworkDeploymentActions}
337 BlockStorageDeployment:
338 type: OS::Heat::StructuredDeployment
339 depends_on: NetworkDeployment
341 name: BlockStorageDeployment
342 server: {get_resource: BlockStorage}
343 config: {get_resource: BlockStorageConfig}
345 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
347 # Map heat metadata into hiera datafiles
349 type: OS::Heat::StructuredConfig
355 - heat_config_%{::deploy_config_name}
361 - bootstrap_node # provided by allNodesConfig
362 - all_nodes # provided by allNodesConfig
363 - vip_data # provided by allNodesConfig
365 merge_behavior: deeper
368 service_names: {get_param: ServiceNames}
369 sensu::subscriptions: {get_param: MonitoringSubscriptions}
372 - {get_param: ServiceConfigSettings}
373 - values: {get_attr: [NetIpMap, net_ip_map]}
374 volume_extraconfig: {get_param: BlockStorageExtraConfig}
375 extraconfig: {get_param: ExtraConfig}
377 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
378 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
379 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
380 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
381 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
382 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
383 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
385 # Resource for site-specific injection of root certificate
387 depends_on: BlockStorageDeployment
388 type: OS::TripleO::NodeTLSCAData
390 server: {get_resource: BlockStorage}
392 # Hook for site-specific additional pre-deployment config,
393 # applying to all nodes, e.g node registration/unregistration
395 depends_on: NodeTLSCAData
396 type: OS::TripleO::NodeExtraConfig
398 server: {get_resource: BlockStorage}
401 type: OS::TripleO::Tasks::PackageUpdate
404 type: OS::Heat::SoftwareDeployment
406 name: UpdateDeployment
407 config: {get_resource: UpdateConfig}
408 server: {get_resource: BlockStorage}
411 get_param: UpdateIdentifier
415 description: IP address of the server in the ctlplane network
416 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
418 description: Hostname of the server
419 value: {get_attr: [BlockStorage, name]}
421 description: Mapping of network names to hostnames
423 external: {get_attr: [NetHostMap, value, external, fqdn]}
424 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
425 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
426 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
427 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
428 management: {get_attr: [NetHostMap, value, management, fqdn]}
429 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
434 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
435 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
436 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
437 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
438 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
439 TENANTIP TENANTHOST.DOMAIN TENANTHOST
440 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
441 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
443 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
444 DOMAIN: {get_param: CloudDomain}
445 PRIMARYHOST: {get_attr: [BlockStorage, name]}
446 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
447 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
448 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
449 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
450 STORAGEIP: {get_attr: [StoragePort, ip_address]}
451 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
452 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
453 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
454 TENANTIP: {get_attr: [TenantPort, ip_address]}
455 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
456 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
457 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
458 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
459 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
460 nova_server_resource:
461 description: Heat resource handle for the block storage server
463 {get_resource: BlockStorage}
465 description: IP address of the server in the external network
466 value: {get_attr: [ExternalPort, ip_address]}
467 internal_api_ip_address:
468 description: IP address of the server in the internal_api network
469 value: {get_attr: [InternalApiPort, ip_address]}
471 description: IP address of the server in the storage network
472 value: {get_attr: [StoragePort, ip_address]}
473 storage_mgmt_ip_address:
474 description: IP address of the server in the storage_mgmt network
475 value: {get_attr: [StorageMgmtPort, ip_address]}
477 description: IP address of the server in the tenant network
478 value: {get_attr: [TenantPort, ip_address]}
479 management_ip_address:
480 description: IP address of the server in the management network
481 value: {get_attr: [ManagementPort, ip_address]}