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}
146 # Creates the "heat-admin" user if configured via the environment
147 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
149 type: OS::TripleO::NodeAdminUserData
151 # For optional operator additional userdata
152 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
154 type: OS::TripleO::NodeUserData
157 type: OS::TripleO::BlockStorage::Ports::ExternalPort
159 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
160 IPPool: {get_param: BlockStorageIPs}
161 NodeIndex: {get_param: NodeIndex}
164 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
166 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: BlockStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::BlockStorage::Ports::StoragePort
173 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: BlockStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
180 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
181 IPPool: {get_param: BlockStorageIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::BlockStorage::Ports::TenantPort
187 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
188 IPPool: {get_param: BlockStorageIPs}
189 NodeIndex: {get_param: NodeIndex}
192 type: OS::TripleO::BlockStorage::Ports::ManagementPort
194 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
195 IPPool: {get_param: BlockStorageIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
201 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
202 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
203 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
204 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
205 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
206 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
207 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
210 type: OS::TripleO::Network::Ports::NetIpMap
212 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
213 ExternalIp: {get_attr: [ExternalPort, ip_address]}
214 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
215 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
216 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
217 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
218 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
219 StorageIp: {get_attr: [StoragePort, ip_address]}
220 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
221 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
222 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
223 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
224 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
225 TenantIp: {get_attr: [TenantPort, ip_address]}
226 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
227 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
228 ManagementIp: {get_attr: [ManagementPort, ip_address]}
229 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
230 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
233 type: OS::Heat::Value
241 - - {get_attr: [BlockStorage, name]}
243 - {get_param: CloudDomain}
247 - - {get_attr: [BlockStorage, name]}
253 - - {get_attr: [BlockStorage, name]}
255 - {get_param: CloudDomain}
259 - - {get_attr: [BlockStorage, name]}
265 - - {get_attr: [BlockStorage, name]}
267 - {get_param: CloudDomain}
271 - - {get_attr: [BlockStorage, name]}
277 - - {get_attr: [BlockStorage, name]}
279 - {get_param: CloudDomain}
283 - - {get_attr: [BlockStorage, name]}
289 - - {get_attr: [BlockStorage, name]}
291 - {get_param: CloudDomain}
295 - - {get_attr: [BlockStorage, name]}
301 - - {get_attr: [BlockStorage, name]}
303 - {get_param: CloudDomain}
307 - - {get_attr: [BlockStorage, name]}
313 - - {get_attr: [BlockStorage, name]}
315 - {get_param: CloudDomain}
319 - - {get_attr: [BlockStorage, name]}
323 type: OS::TripleO::SoftwareDeployment
325 name: NetworkDeployment
326 config: {get_resource: NetworkConfig}
327 server: {get_resource: BlockStorage}
328 actions: {get_param: NetworkDeploymentActions}
330 BlockStorageDeployment:
331 type: OS::Heat::StructuredDeployment
332 depends_on: NetworkDeployment
334 name: BlockStorageDeployment
335 server: {get_resource: BlockStorage}
336 config: {get_resource: BlockStorageConfig}
338 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
340 # Map heat metadata into hiera datafiles
342 type: OS::Heat::StructuredConfig
348 - heat_config_%{::deploy_config_name}
354 - bootstrap_node # provided by allNodesConfig
355 - all_nodes # provided by allNodesConfig
356 - vip_data # provided by allNodesConfig
358 merge_behavior: deeper
361 service_names: {get_param: ServiceNames}
362 sensu::subscriptions: {get_param: MonitoringSubscriptions}
365 - {get_param: ServiceConfigSettings}
366 - values: {get_attr: [NetIpMap, net_ip_map]}
367 volume_extraconfig: {get_param: BlockStorageExtraConfig}
368 extraconfig: {get_param: ExtraConfig}
370 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
371 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
372 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
373 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
374 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
375 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
376 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
378 # Resource for site-specific injection of root certificate
380 depends_on: BlockStorageDeployment
381 type: OS::TripleO::NodeTLSCAData
383 server: {get_resource: BlockStorage}
385 # Hook for site-specific additional pre-deployment config,
386 # applying to all nodes, e.g node registration/unregistration
388 depends_on: NodeTLSCAData
389 type: OS::TripleO::NodeExtraConfig
391 server: {get_resource: BlockStorage}
394 type: OS::TripleO::Tasks::PackageUpdate
397 type: OS::Heat::SoftwareDeployment
399 name: UpdateDeployment
400 config: {get_resource: UpdateConfig}
401 server: {get_resource: BlockStorage}
404 get_param: UpdateIdentifier
408 description: IP address of the server in the ctlplane network
409 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
411 description: Hostname of the server
412 value: {get_attr: [BlockStorage, name]}
414 description: Mapping of network names to hostnames
416 external: {get_attr: [NetHostMap, value, external, fqdn]}
417 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
418 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
419 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
420 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
421 management: {get_attr: [NetHostMap, value, management, fqdn]}
422 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
427 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
428 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
429 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
430 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
431 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
432 TENANTIP TENANTHOST.DOMAIN TENANTHOST
433 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
434 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
436 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
437 DOMAIN: {get_param: CloudDomain}
438 PRIMARYHOST: {get_attr: [BlockStorage, name]}
439 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
440 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
441 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
442 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
443 STORAGEIP: {get_attr: [StoragePort, ip_address]}
444 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
445 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
446 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
447 TENANTIP: {get_attr: [TenantPort, ip_address]}
448 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
449 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
450 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
451 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
452 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
453 nova_server_resource:
454 description: Heat resource handle for the block storage server
456 {get_resource: BlockStorage}
458 description: IP address of the server in the external network
459 value: {get_attr: [ExternalPort, ip_address]}
460 internal_api_ip_address:
461 description: IP address of the server in the internal_api network
462 value: {get_attr: [InternalApiPort, ip_address]}
464 description: IP address of the server in the storage network
465 value: {get_attr: [StoragePort, ip_address]}
466 storage_mgmt_ip_address:
467 description: IP address of the server in the storage_mgmt network
468 value: {get_attr: [StorageMgmtPort, ip_address]}
470 description: IP address of the server in the tenant network
471 value: {get_attr: [TenantPort, ip_address]}
472 management_ip_address:
473 description: IP address of the server in the management network
474 value: {get_attr: [ManagementPort, ip_address]}