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 Command or script snippet to run on all overcloud nodes to
113 initialize the upgrade process. E.g. a repository switch.
118 type: OS::TripleO::Server
121 command: {get_param: ConfigCommand}
124 {get_param: BlockStorageImage}
125 flavor: {get_param: OvercloudBlockStorageFlavor}
126 key_name: {get_param: KeyName}
129 user_data_format: SOFTWARE_CONFIG
130 user_data: {get_resource: UserData}
133 template: {get_param: Hostname}
134 params: {get_param: HostnameMap}
135 software_config_transport: {get_param: SoftwareConfigTransport}
138 - {get_param: ServerMetadata}
139 - {get_param: BlockStorageServerMetadata}
140 scheduler_hints: {get_param: BlockStorageSchedulerHints}
142 # Combine the NodeAdminUserData and NodeUserData mime archives
144 type: OS::Heat::MultipartMime
147 - config: {get_resource: NodeAdminUserData}
149 - config: {get_resource: NodeUserData}
152 # Creates the "heat-admin" user if configured via the environment
153 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
155 type: OS::TripleO::NodeAdminUserData
157 # For optional operator additional userdata
158 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
160 type: OS::TripleO::NodeUserData
163 type: OS::TripleO::BlockStorage::Ports::ExternalPort
165 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
166 IPPool: {get_param: BlockStorageIPs}
167 NodeIndex: {get_param: NodeIndex}
170 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
172 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
173 IPPool: {get_param: BlockStorageIPs}
174 NodeIndex: {get_param: NodeIndex}
177 type: OS::TripleO::BlockStorage::Ports::StoragePort
179 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
180 IPPool: {get_param: BlockStorageIPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
186 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
187 IPPool: {get_param: BlockStorageIPs}
188 NodeIndex: {get_param: NodeIndex}
191 type: OS::TripleO::BlockStorage::Ports::TenantPort
193 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
194 IPPool: {get_param: BlockStorageIPs}
195 NodeIndex: {get_param: NodeIndex}
198 type: OS::TripleO::BlockStorage::Ports::ManagementPort
200 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
201 IPPool: {get_param: BlockStorageIPs}
202 NodeIndex: {get_param: NodeIndex}
205 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
207 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
208 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
209 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
210 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
211 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
212 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
213 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
216 type: OS::TripleO::Network::Ports::NetIpMap
218 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
219 ExternalIp: {get_attr: [ExternalPort, ip_address]}
220 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
221 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
222 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
223 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
224 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
225 StorageIp: {get_attr: [StoragePort, ip_address]}
226 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
227 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
228 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
229 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
230 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
231 TenantIp: {get_attr: [TenantPort, ip_address]}
232 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
233 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
234 ManagementIp: {get_attr: [ManagementPort, ip_address]}
235 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
236 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
239 type: OS::Heat::Value
247 - - {get_attr: [BlockStorage, name]}
249 - {get_param: CloudDomain}
253 - - {get_attr: [BlockStorage, name]}
259 - - {get_attr: [BlockStorage, name]}
261 - {get_param: CloudDomain}
265 - - {get_attr: [BlockStorage, name]}
271 - - {get_attr: [BlockStorage, name]}
273 - {get_param: CloudDomain}
277 - - {get_attr: [BlockStorage, name]}
283 - - {get_attr: [BlockStorage, name]}
285 - {get_param: CloudDomain}
289 - - {get_attr: [BlockStorage, name]}
295 - - {get_attr: [BlockStorage, name]}
297 - {get_param: CloudDomain}
301 - - {get_attr: [BlockStorage, name]}
307 - - {get_attr: [BlockStorage, name]}
309 - {get_param: CloudDomain}
313 - - {get_attr: [BlockStorage, name]}
319 - - {get_attr: [BlockStorage, name]}
321 - {get_param: CloudDomain}
325 - - {get_attr: [BlockStorage, name]}
329 type: OS::TripleO::SoftwareDeployment
331 name: NetworkDeployment
332 config: {get_resource: NetworkConfig}
333 server: {get_resource: BlockStorage}
334 actions: {get_param: NetworkDeploymentActions}
336 BlockStorageUpgradeInitConfig:
337 type: OS::Heat::SoftwareConfig
343 - - "#!/bin/bash\n\n"
344 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
345 - get_param: UpgradeInitCommand
347 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
348 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
349 BlockStorageUpgradeInitDeployment:
350 type: OS::Heat::SoftwareDeployment
351 depends_on: NetworkDeployment
353 name: BlockStorageUpgradeInitDeployment
354 server: {get_resource: BlockStorage}
355 config: {get_resource: BlockStorageUpgradeInitConfig}
357 BlockStorageDeployment:
358 type: OS::Heat::StructuredDeployment
359 depends_on: BlockStorageUpgradeInitDeployment
361 name: BlockStorageDeployment
362 server: {get_resource: BlockStorage}
363 config: {get_resource: BlockStorageConfig}
365 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
367 # Map heat metadata into hiera datafiles
369 type: OS::Heat::StructuredConfig
375 - heat_config_%{::deploy_config_name}
381 - bootstrap_node # provided by allNodesConfig
382 - all_nodes # provided by allNodesConfig
383 - vip_data # provided by allNodesConfig
385 merge_behavior: deeper
388 service_names: {get_param: ServiceNames}
389 sensu::subscriptions: {get_param: MonitoringSubscriptions}
392 - {get_param: ServiceConfigSettings}
393 - values: {get_attr: [NetIpMap, net_ip_map]}
394 volume_extraconfig: {get_param: BlockStorageExtraConfig}
395 extraconfig: {get_param: ExtraConfig}
397 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
398 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
399 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
400 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
401 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
402 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
403 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
405 # Resource for site-specific injection of root certificate
407 depends_on: BlockStorageDeployment
408 type: OS::TripleO::NodeTLSCAData
410 server: {get_resource: BlockStorage}
412 # Hook for site-specific additional pre-deployment config,
413 # applying to all nodes, e.g node registration/unregistration
415 depends_on: NodeTLSCAData
416 type: OS::TripleO::NodeExtraConfig
418 server: {get_resource: BlockStorage}
421 type: OS::TripleO::Tasks::PackageUpdate
424 type: OS::Heat::SoftwareDeployment
426 name: UpdateDeployment
427 config: {get_resource: UpdateConfig}
428 server: {get_resource: BlockStorage}
431 get_param: UpdateIdentifier
435 description: IP address of the server in the ctlplane network
436 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
438 description: Hostname of the server
439 value: {get_attr: [BlockStorage, name]}
441 description: Mapping of network names to hostnames
443 external: {get_attr: [NetHostMap, value, external, fqdn]}
444 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
445 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
446 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
447 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
448 management: {get_attr: [NetHostMap, value, management, fqdn]}
449 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
454 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
455 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
456 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
457 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
458 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
459 TENANTIP TENANTHOST.DOMAIN TENANTHOST
460 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
461 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
463 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
464 DOMAIN: {get_param: CloudDomain}
465 PRIMARYHOST: {get_attr: [BlockStorage, name]}
466 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
467 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
468 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
469 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
470 STORAGEIP: {get_attr: [StoragePort, ip_address]}
471 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
472 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
473 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
474 TENANTIP: {get_attr: [TenantPort, ip_address]}
475 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
476 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
477 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
478 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
479 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
480 nova_server_resource:
481 description: Heat resource handle for the block storage server
483 {get_resource: BlockStorage}
485 description: IP address of the server in the external network
486 value: {get_attr: [ExternalPort, ip_address]}
487 internal_api_ip_address:
488 description: IP address of the server in the internal_api network
489 value: {get_attr: [InternalApiPort, ip_address]}
491 description: IP address of the server in the storage network
492 value: {get_attr: [StoragePort, ip_address]}
493 storage_mgmt_ip_address:
494 description: IP address of the server in the storage_mgmt network
495 value: {get_attr: [StorageMgmtPort, ip_address]}
497 description: IP address of the server in the tenant network
498 value: {get_attr: [TenantPort, ip_address]}
499 management_ip_address:
500 description: IP address of the server in the management network
501 value: {get_attr: [ManagementPort, ip_address]}