1 heat_template_version: pike
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
116 Maximum amount of time to possibly to delay configuation collection
117 polling. Defaults to 30 seconds. Set to 0 to disable it which will cause
118 the configuration collection to occur as soon as the collection process
119 starts. This setting is used to prevent the configuration collection
120 processes from polling all at the exact same time.
124 Command or script snippet to run on all overcloud nodes to
125 initialize the upgrade process. E.g. a repository switch.
127 UpgradeInitCommonCommand:
130 Common commands required by the upgrades process. This should not
131 normally be modified by the operator and is set and unset in the
132 major-upgrade-composable-steps.yaml and major-upgrade-converge.yaml
135 DeploymentServerBlacklistDict:
139 Map of server hostnames to blacklist from any triggered
140 deployments. If the value is 1, the server will be blacklisted. This
141 parameter is generated from the parent template.
144 description: Role Specific Parameters
148 server_not_blacklisted:
151 - {get_param: [DeploymentServerBlacklistDict, {get_param: Hostname}]}
156 type: OS::TripleO::BlockStorageServer
159 command: {get_param: ConfigCommand}
160 splay: {get_param: ConfigCollectSplay}
163 {get_param: BlockStorageImage}
164 flavor: {get_param: OvercloudBlockStorageFlavor}
165 key_name: {get_param: KeyName}
168 user_data_format: SOFTWARE_CONFIG
169 user_data: {get_resource: UserData}
172 template: {get_param: Hostname}
173 params: {get_param: HostnameMap}
174 software_config_transport: {get_param: SoftwareConfigTransport}
177 - {get_param: ServerMetadata}
178 - {get_param: BlockStorageServerMetadata}
179 - {get_param: ServiceMetadataSettings}
180 scheduler_hints: {get_param: BlockStorageSchedulerHints}
182 # Combine the NodeAdminUserData and NodeUserData mime archives
184 type: OS::Heat::MultipartMime
187 - config: {get_resource: NodeAdminUserData}
189 - config: {get_resource: NodeUserData}
191 - config: {get_resource: RoleUserData}
194 # Creates the "heat-admin" user if configured via the environment
195 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
197 type: OS::TripleO::NodeAdminUserData
199 # For optional operator additional userdata
200 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
202 type: OS::TripleO::NodeUserData
204 # For optional operator role-specific userdata
205 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
207 type: OS::TripleO::BlockStorage::NodeUserData
210 type: OS::TripleO::BlockStorage::Ports::ExternalPort
212 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
213 IPPool: {get_param: BlockStorageIPs}
214 NodeIndex: {get_param: NodeIndex}
217 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
219 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
220 IPPool: {get_param: BlockStorageIPs}
221 NodeIndex: {get_param: NodeIndex}
224 type: OS::TripleO::BlockStorage::Ports::StoragePort
226 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
227 IPPool: {get_param: BlockStorageIPs}
228 NodeIndex: {get_param: NodeIndex}
231 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
233 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
234 IPPool: {get_param: BlockStorageIPs}
235 NodeIndex: {get_param: NodeIndex}
238 type: OS::TripleO::BlockStorage::Ports::TenantPort
240 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
241 IPPool: {get_param: BlockStorageIPs}
242 NodeIndex: {get_param: NodeIndex}
245 type: OS::TripleO::BlockStorage::Ports::ManagementPort
247 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
248 IPPool: {get_param: BlockStorageIPs}
249 NodeIndex: {get_param: NodeIndex}
252 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
254 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
255 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
256 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
257 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
258 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
259 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
260 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
263 type: OS::TripleO::Network::Ports::NetIpMap
265 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
266 ExternalIp: {get_attr: [ExternalPort, ip_address]}
267 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
268 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
269 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
270 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
271 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
272 StorageIp: {get_attr: [StoragePort, ip_address]}
273 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
274 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
275 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
276 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
277 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
278 TenantIp: {get_attr: [TenantPort, ip_address]}
279 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
280 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
281 ManagementIp: {get_attr: [ManagementPort, ip_address]}
282 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
283 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
286 type: OS::Heat::Value
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]}
342 - - {get_attr: [BlockStorage, name]}
344 - {get_param: CloudDomain}
348 - - {get_attr: [BlockStorage, name]}
354 - - {get_attr: [BlockStorage, name]}
356 - {get_param: CloudDomain}
360 - - {get_attr: [BlockStorage, name]}
366 - - {get_attr: [BlockStorage, name]}
368 - {get_param: CloudDomain}
372 - - {get_attr: [BlockStorage, name]}
376 type: OS::TripleO::BlockStorage::PreNetworkConfig
378 server: {get_resource: BlockStorage}
379 RoleParameters: {get_param: RoleParameters}
382 type: OS::TripleO::SoftwareDeployment
383 depends_on: PreNetworkConfig
385 name: NetworkDeployment
386 config: {get_resource: NetworkConfig}
387 server: {get_resource: BlockStorage}
390 - server_not_blacklisted
391 - {get_param: NetworkDeploymentActions}
394 BlockStorageUpgradeInitConfig:
395 type: OS::Heat::SoftwareConfig
401 - - "#!/bin/bash\n\n"
402 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
403 - get_param: UpgradeInitCommand
404 - get_param: UpgradeInitCommonCommand
406 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
407 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
408 BlockStorageUpgradeInitDeployment:
409 type: OS::Heat::SoftwareDeployment
410 depends_on: NetworkDeployment
412 name: BlockStorageUpgradeInitDeployment
413 server: {get_resource: BlockStorage}
414 config: {get_resource: BlockStorageUpgradeInitConfig}
417 - server_not_blacklisted
418 - ['CREATE', 'UPDATE']
421 BlockStorageDeployment:
422 type: OS::Heat::StructuredDeployment
423 depends_on: BlockStorageUpgradeInitDeployment
425 name: BlockStorageDeployment
426 server: {get_resource: BlockStorage}
427 config: {get_resource: BlockStorageConfig}
429 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
432 - server_not_blacklisted
433 - ['CREATE', 'UPDATE']
436 # Map heat metadata into hiera datafiles
438 type: OS::Heat::StructuredConfig
444 - heat_config_%{::deploy_config_name}
451 - bootstrap_node # provided by allNodesConfig
452 - all_nodes # provided by allNodesConfig
453 - vip_data # provided by allNodesConfig
455 merge_behavior: deeper
458 service_names: {get_param: ServiceNames}
459 sensu::subscriptions: {get_param: MonitoringSubscriptions}
462 - {get_param: ServiceConfigSettings}
463 - values: {get_attr: [NetIpMap, net_ip_map]}
464 volume_extraconfig: {get_param: BlockStorageExtraConfig}
465 extraconfig: {get_param: ExtraConfig}
467 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
468 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
469 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
470 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
471 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
472 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
473 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
474 fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
476 # Resource for site-specific injection of root certificate
478 depends_on: BlockStorageDeployment
479 type: OS::TripleO::NodeTLSCAData
481 server: {get_resource: BlockStorage}
483 # Hook for site-specific additional pre-deployment config,
484 # applying to all nodes, e.g node registration/unregistration
486 depends_on: NodeTLSCAData
487 type: OS::TripleO::NodeExtraConfig
489 server: {get_resource: BlockStorage}
492 type: OS::TripleO::Tasks::PackageUpdate
495 type: OS::Heat::SoftwareDeployment
496 depends_on: NetworkDeployment
498 name: UpdateDeployment
499 config: {get_resource: UpdateConfig}
500 server: {get_resource: BlockStorage}
503 get_param: UpdateIdentifier
506 - server_not_blacklisted
507 - ['CREATE', 'UPDATE']
511 type: OS::TripleO::Ssh::HostPubKey
512 depends_on: BlockStorageDeployment
514 server: {get_resource: BlockStorage}
518 description: IP address of the server in the ctlplane network
519 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
521 description: Hostname of the server
522 value: {get_attr: [BlockStorage, name]}
524 description: Mapping of network names to hostnames
526 external: {get_attr: [NetHostMap, value, external, fqdn]}
527 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
528 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
529 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
530 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
531 management: {get_attr: [NetHostMap, value, management, fqdn]}
532 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
537 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
538 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
539 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
540 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
541 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
542 TENANTIP TENANTHOST.DOMAIN TENANTHOST
543 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
544 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
546 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
547 DOMAIN: {get_param: CloudDomain}
548 PRIMARYHOST: {get_attr: [BlockStorage, name]}
549 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
550 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
551 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
552 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
553 STORAGEIP: {get_attr: [StoragePort, ip_address]}
554 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
555 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
556 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
557 TENANTIP: {get_attr: [TenantPort, ip_address]}
558 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
559 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
560 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
561 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
562 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
564 description: Entry for ssh known hosts
567 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
568 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
569 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
570 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
571 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
572 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
573 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
574 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
576 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
577 DOMAIN: {get_param: CloudDomain}
578 PRIMARYHOST: {get_attr: [BlockStorage, name]}
579 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
580 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
581 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
582 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
583 STORAGEIP: {get_attr: [StoragePort, ip_address]}
584 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
585 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
586 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
587 TENANTIP: {get_attr: [TenantPort, ip_address]}
588 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
589 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
590 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
591 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
592 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
593 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
594 nova_server_resource:
595 description: Heat resource handle for the block storage server
597 {get_resource: BlockStorage}
598 condition: server_not_blacklisted
600 description: IP address of the server in the external network
601 value: {get_attr: [ExternalPort, ip_address]}
602 internal_api_ip_address:
603 description: IP address of the server in the internal_api network
604 value: {get_attr: [InternalApiPort, ip_address]}
606 description: IP address of the server in the storage network
607 value: {get_attr: [StoragePort, ip_address]}
608 storage_mgmt_ip_address:
609 description: IP address of the server in the storage_mgmt network
610 value: {get_attr: [StorageMgmtPort, ip_address]}
612 description: IP address of the server in the tenant network
613 value: {get_attr: [TenantPort, ip_address]}
614 management_ip_address:
615 description: IP address of the server in the management network
616 value: {get_attr: [ManagementPort, ip_address]}