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.
77 Extra properties or metadata passed to Nova for the created nodes in
78 the overcloud. It's accessible via the Nova metadata API.
80 BlockStorageSchedulerHints:
82 description: Optional scheduler hints to pass to nova
87 ServiceConfigSettings:
91 type: comma_delimited_list
93 MonitoringSubscriptions:
94 type: comma_delimited_list
98 description: Command which will be run whenever configuration data changes
99 default: os-refresh-config --timeout 14400
103 type: OS::TripleO::Server
106 command: {get_param: ConfigCommand}
109 {get_param: BlockStorageImage}
110 flavor: {get_param: OvercloudBlockStorageFlavor}
111 key_name: {get_param: KeyName}
114 user_data_format: SOFTWARE_CONFIG
115 user_data: {get_resource: UserData}
118 template: {get_param: Hostname}
119 params: {get_param: HostnameMap}
120 software_config_transport: {get_param: SoftwareConfigTransport}
121 metadata: {get_param: ServerMetadata}
122 scheduler_hints: {get_param: BlockStorageSchedulerHints}
124 # Combine the NodeAdminUserData and NodeUserData mime archives
126 type: OS::Heat::MultipartMime
129 - config: {get_resource: NodeAdminUserData}
131 - config: {get_resource: NodeUserData}
134 # Creates the "heat-admin" user if configured via the environment
135 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
137 type: OS::TripleO::NodeAdminUserData
139 # For optional operator additional userdata
140 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
142 type: OS::TripleO::NodeUserData
145 type: OS::TripleO::BlockStorage::Ports::ExternalPort
147 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
148 IPPool: {get_param: BlockStorageIPs}
149 NodeIndex: {get_param: NodeIndex}
152 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
154 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
155 IPPool: {get_param: BlockStorageIPs}
156 NodeIndex: {get_param: NodeIndex}
159 type: OS::TripleO::BlockStorage::Ports::StoragePort
161 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
162 IPPool: {get_param: BlockStorageIPs}
163 NodeIndex: {get_param: NodeIndex}
166 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
168 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
169 IPPool: {get_param: BlockStorageIPs}
170 NodeIndex: {get_param: NodeIndex}
173 type: OS::TripleO::BlockStorage::Ports::TenantPort
175 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
176 IPPool: {get_param: BlockStorageIPs}
177 NodeIndex: {get_param: NodeIndex}
180 type: OS::TripleO::BlockStorage::Ports::ManagementPort
182 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
183 IPPool: {get_param: BlockStorageIPs}
184 NodeIndex: {get_param: NodeIndex}
187 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
189 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
190 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
191 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
192 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
193 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
194 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
195 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
198 type: OS::TripleO::Network::Ports::NetIpMap
200 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
201 ExternalIp: {get_attr: [ExternalPort, ip_address]}
202 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
203 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
204 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
205 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
206 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
207 StorageIp: {get_attr: [StoragePort, ip_address]}
208 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
209 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
210 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
211 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
212 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
213 TenantIp: {get_attr: [TenantPort, ip_address]}
214 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
215 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
216 ManagementIp: {get_attr: [ManagementPort, ip_address]}
217 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
218 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
221 type: OS::Heat::Value
229 - - {get_attr: [BlockStorage, name]}
231 - {get_param: CloudDomain}
235 - - {get_attr: [BlockStorage, name]}
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]}
311 type: OS::TripleO::SoftwareDeployment
313 name: NetworkDeployment
314 config: {get_resource: NetworkConfig}
315 server: {get_resource: BlockStorage}
316 actions: {get_param: NetworkDeploymentActions}
318 BlockStorageDeployment:
319 type: OS::Heat::StructuredDeployment
320 depends_on: NetworkDeployment
322 name: BlockStorageDeployment
323 server: {get_resource: BlockStorage}
324 config: {get_resource: BlockStorageConfig}
326 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
328 # Map heat metadata into hiera datafiles
330 type: OS::Heat::StructuredConfig
336 - heat_config_%{::deploy_config_name}
342 - bootstrap_node # provided by allNodesConfig
343 - all_nodes # provided by allNodesConfig
344 - vip_data # provided by allNodesConfig
346 merge_behavior: deeper
349 service_names: {get_param: ServiceNames}
350 sensu::subscriptions: {get_param: MonitoringSubscriptions}
353 - {get_param: ServiceConfigSettings}
354 - values: {get_attr: [NetIpMap, net_ip_map]}
355 volume_extraconfig: {get_param: BlockStorageExtraConfig}
356 extraconfig: {get_param: ExtraConfig}
358 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
359 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
360 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
361 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
362 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
363 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
364 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
366 # Resource for site-specific injection of root certificate
368 depends_on: BlockStorageDeployment
369 type: OS::TripleO::NodeTLSCAData
371 server: {get_resource: BlockStorage}
373 # Hook for site-specific additional pre-deployment config,
374 # applying to all nodes, e.g node registration/unregistration
376 depends_on: NodeTLSCAData
377 type: OS::TripleO::NodeExtraConfig
379 server: {get_resource: BlockStorage}
382 type: OS::TripleO::Tasks::PackageUpdate
385 type: OS::Heat::SoftwareDeployment
387 name: UpdateDeployment
388 config: {get_resource: UpdateConfig}
389 server: {get_resource: BlockStorage}
392 get_param: UpdateIdentifier
396 description: IP address of the server in the ctlplane network
397 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
399 description: Hostname of the server
400 value: {get_attr: [BlockStorage, name]}
402 description: Mapping of network names to hostnames
404 external: {get_attr: [NetHostMap, value, external, fqdn]}
405 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
406 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
407 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
408 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
409 management: {get_attr: [NetHostMap, value, management, fqdn]}
410 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
415 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
416 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
417 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
418 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
419 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
420 TENANTIP TENANTHOST.DOMAIN TENANTHOST
421 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
422 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
424 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
425 DOMAIN: {get_param: CloudDomain}
426 PRIMARYHOST: {get_attr: [BlockStorage, name]}
427 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
428 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
429 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
430 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
431 STORAGEIP: {get_attr: [StoragePort, ip_address]}
432 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
433 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
434 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
435 TENANTIP: {get_attr: [TenantPort, ip_address]}
436 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
437 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
438 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
439 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
440 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
441 nova_server_resource:
442 description: Heat resource handle for the block storage server
444 {get_resource: BlockStorage}
446 description: IP address of the server in the external network
447 value: {get_attr: [ExternalPort, ip_address]}
448 internal_api_ip_address:
449 description: IP address of the server in the internal_api network
450 value: {get_attr: [InternalApiPort, ip_address]}
452 description: IP address of the server in the storage network
453 value: {get_attr: [StoragePort, ip_address]}
454 storage_mgmt_ip_address:
455 description: IP address of the server in the storage_mgmt network
456 value: {get_attr: [StorageMgmtPort, ip_address]}
458 description: IP address of the server in the tenant network
459 value: {get_attr: [TenantPort, ip_address]}
460 management_ip_address:
461 description: IP address of the server in the management network
462 value: {get_attr: [ManagementPort, ip_address]}