1 heat_template_version: pike
4 OpenStack hypervisor node configured via Puppet.
10 Additional hiera configuration to inject into the cluster. Note
11 that NovaComputeExtraConfig takes precedence over ExtraConfig.
13 OvercloudComputeFlavor:
14 description: Flavor for the nova compute node
18 - custom_constraint: nova.flavor
21 default: overcloud-full
23 - custom_constraint: glance.image
25 default: 'REBUILD_PRESERVE_EPHEMERAL'
26 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
29 description: Name of an existing Nova key pair to enable SSH access to the instances
33 - custom_constraint: nova.keypair
34 NeutronPhysicalBridge:
36 description: An OVS bridge to create for accessing external networks.
38 NeutronPublicInterface:
40 description: Which interface to add to the NeutronPhysicalBridge.
45 NovaComputeExtraConfig:
48 NovaCompute specific configuration to inject into the cluster. Same
49 structure as ExtraConfig.
56 description: Mapping of service_name -> network name. Typically set
57 via parameter_defaults in the resource registry.
61 description: Mapping of service endpoint -> protocol. Typically set
62 via parameter_defaults in the resource registry.
68 Setting to a previously unused value during stack-update will trigger
69 package update on all nodes
72 default: '' # Defaults to Heat created hostname
76 description: Optional mapping to override hostnames
77 NetworkDeploymentActions:
78 type: comma_delimited_list
80 Heat action when to apply network configuration changes
82 SoftwareConfigTransport:
83 default: POLL_SERVER_CFN
85 How the server should receive the metadata required for software configuration.
88 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
90 default: 'localdomain'
93 The DNS domain used for the hosts. This must match the
94 overcloud_domain_name configured on the undercloud.
95 NovaComputeServerMetadata:
98 Extra properties or metadata passed to Nova for the created nodes in
99 the overcloud. It's accessible via the Nova metadata API. This option is
100 role-specific and is merged with the values given to the ServerMetadata
106 Extra properties or metadata passed to Nova for the created nodes in
107 the overcloud. It's accessible via the Nova metadata API. This applies to
108 all roles and is merged with a role-specific metadata parameter.
110 NovaComputeSchedulerHints:
112 description: Optional scheduler hints to pass to nova
114 ServiceConfigSettings:
118 type: comma_delimited_list
120 MonitoringSubscriptions:
121 type: comma_delimited_list
123 ServiceMetadataSettings:
128 description: Command which will be run whenever configuration data changes
129 default: os-refresh-config --timeout 14400
134 Maximum amount of time to possibly to delay configuation collection
135 polling. Defaults to 30 seconds. Set to 0 to disable it which will cause
136 the configuration collection to occur as soon as the collection process
137 starts. This setting is used to prevent the configuration collection
138 processes from polling all at the exact same time.
142 Command or script snippet to run on all overcloud nodes to
143 initialize the upgrade process. E.g. a repository switch.
145 UpgradeInitCommonCommand:
148 Common commands required by the upgrades process. This should not
149 normally be modified by the operator and is set and unset in the
150 major-upgrade-composable-steps.yaml and major-upgrade-converge.yaml
153 DeploymentServerBlacklistDict:
157 Map of server hostnames to blacklist from any triggered
158 deployments. If the value is 1, the server will be blacklisted. This
159 parameter is generated from the parent template.
162 description: Role Specific Parameters
163 DeploymentSwiftDataMap:
166 Map of servers to Swift container and object for storing deployment data.
167 The keys are the Heat assigned hostnames, and the value is a map of the
168 container/object name in Swift. Example value:
169 overcloud-controller-0:
170 container: overcloud-controller
172 overcloud-controller-1:
173 container: overcloud-controller
175 overcloud-controller-2:
176 container: overcloud-controller
178 overcloud-novacompute-0:
179 container: overcloud-compute
184 deployment_swift_data_map_unset:
187 - DeploymentSwiftDataMap
188 - {get_param: Hostname}
190 server_not_blacklisted:
193 - {get_param: [DeploymentServerBlacklistDict, {get_param: Hostname}]}
199 type: OS::TripleO::ComputeServer
202 command: {get_param: ConfigCommand}
203 splay: {get_param: ConfigCollectSplay}
205 image: {get_param: NovaImage}
207 get_param: ImageUpdatePolicy
208 flavor: {get_param: OvercloudComputeFlavor}
209 key_name: {get_param: KeyName}
212 user_data_format: SOFTWARE_CONFIG
213 user_data: {get_resource: UserData}
216 template: {get_param: Hostname}
217 params: {get_param: HostnameMap}
218 software_config_transport: {get_param: SoftwareConfigTransport}
221 - {get_param: ServerMetadata}
222 - {get_param: NovaComputeServerMetadata}
223 - {get_param: ServiceMetadataSettings}
224 scheduler_hints: {get_param: NovaComputeSchedulerHints}
225 deployment_swift_data:
227 - deployment_swift_data_map_unset
229 - {get_param: [DeploymentSwiftDataMap,
230 {get_param: Hostname}]}
232 # Combine the NodeAdminUserData and NodeUserData mime archives
234 type: OS::Heat::MultipartMime
237 - config: {get_resource: NodeAdminUserData}
239 - config: {get_resource: NodeUserData}
241 - config: {get_resource: RoleUserData}
244 # Creates the "heat-admin" user if configured via the environment
245 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
247 type: OS::TripleO::NodeAdminUserData
249 # For optional operator additional userdata
250 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
252 type: OS::TripleO::NodeUserData
254 # For optional operator role-specific userdata
255 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
257 type: OS::TripleO::Compute::NodeUserData
260 type: OS::TripleO::Compute::Ports::ExternalPort
262 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
263 IPPool: {get_param: NovaComputeIPs}
264 NodeIndex: {get_param: NodeIndex}
267 type: OS::TripleO::Compute::Ports::InternalApiPort
269 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
270 IPPool: {get_param: NovaComputeIPs}
271 NodeIndex: {get_param: NodeIndex}
274 type: OS::TripleO::Compute::Ports::StoragePort
276 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
277 IPPool: {get_param: NovaComputeIPs}
278 NodeIndex: {get_param: NodeIndex}
281 type: OS::TripleO::Compute::Ports::StorageMgmtPort
283 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
284 IPPool: {get_param: NovaComputeIPs}
285 NodeIndex: {get_param: NodeIndex}
288 type: OS::TripleO::Compute::Ports::TenantPort
290 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
291 IPPool: {get_param: NovaComputeIPs}
292 NodeIndex: {get_param: NodeIndex}
295 type: OS::TripleO::Compute::Ports::ManagementPort
297 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
298 IPPool: {get_param: NovaComputeIPs}
299 NodeIndex: {get_param: NodeIndex}
302 type: OS::TripleO::Network::Ports::NetIpMap
304 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
305 ExternalIp: {get_attr: [ExternalPort, ip_address]}
306 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
307 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
308 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
309 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
310 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
311 StorageIp: {get_attr: [StoragePort, ip_address]}
312 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
313 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
314 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
315 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
316 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
317 TenantIp: {get_attr: [TenantPort, ip_address]}
318 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
319 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
320 ManagementIp: {get_attr: [ManagementPort, ip_address]}
321 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
322 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
325 type: OS::Heat::Value
333 - - {get_attr: [NovaCompute, name]}
335 - {get_param: CloudDomain}
339 - - {get_attr: [NovaCompute, name]}
345 - - {get_attr: [NovaCompute, name]}
347 - {get_param: CloudDomain}
351 - - {get_attr: [NovaCompute, name]}
357 - - {get_attr: [NovaCompute, name]}
359 - {get_param: CloudDomain}
363 - - {get_attr: [NovaCompute, name]}
369 - - {get_attr: [NovaCompute, name]}
371 - {get_param: CloudDomain}
375 - - {get_attr: [NovaCompute, name]}
381 - - {get_attr: [NovaCompute, name]}
383 - {get_param: CloudDomain}
387 - - {get_attr: [NovaCompute, name]}
393 - - {get_attr: [NovaCompute, name]}
395 - {get_param: CloudDomain}
399 - - {get_attr: [NovaCompute, name]}
405 - - {get_attr: [NovaCompute, name]}
407 - {get_param: CloudDomain}
411 - - {get_attr: [NovaCompute, name]}
415 type: OS::TripleO::Compute::PreNetworkConfig
417 server: {get_resource: NovaCompute}
418 RoleParameters: {get_param: RoleParameters}
419 ServiceNames: {get_param: ServiceNames}
422 type: OS::TripleO::Compute::Net::SoftwareConfig
424 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
425 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
426 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
427 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
428 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
429 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
430 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
433 type: OS::TripleO::SoftwareDeployment
434 depends_on: PreNetworkConfig
436 name: NetworkDeployment
439 - server_not_blacklisted
440 - {get_param: NetworkDeploymentActions}
442 config: {get_resource: NetworkConfig}
443 server: {get_resource: NovaCompute}
445 bridge_name: {get_param: NeutronPhysicalBridge}
446 interface_name: {get_param: NeutronPublicInterface}
448 NovaComputeUpgradeInitConfig:
449 type: OS::Heat::SoftwareConfig
455 - - "#!/bin/bash\n\n"
456 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
457 - get_param: UpgradeInitCommand
458 - get_param: UpgradeInitCommonCommand
460 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
461 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
462 NovaComputeUpgradeInitDeployment:
463 type: OS::Heat::SoftwareDeployment
464 depends_on: NetworkDeployment
466 name: NovaComputeUpgradeInitDeployment
469 - server_not_blacklisted
470 - ['CREATE', 'UPDATE']
472 server: {get_resource: NovaCompute}
473 config: {get_resource: NovaComputeUpgradeInitConfig}
476 type: OS::Heat::StructuredConfig
482 - heat_config_%{::deploy_config_name}
484 - compute_extraconfig
489 - bootstrap_node # provided by allNodesConfig
490 - all_nodes # provided by allNodesConfig
491 - vip_data # provided by allNodesConfig
493 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
494 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
495 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
496 - midonet_data # Optionally provided by AllNodesExtraConfig
497 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
498 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
499 merge_behavior: deeper
502 service_names: {get_param: ServiceNames}
503 sensu::subscriptions: {get_param: MonitoringSubscriptions}
506 - {get_param: ServiceConfigSettings}
507 - values: {get_attr: [NetIpMap, net_ip_map]}
508 compute_extraconfig: {get_param: NovaComputeExtraConfig}
509 extraconfig: {get_param: ExtraConfig}
511 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
512 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
513 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
514 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
515 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
516 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
517 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
518 fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
520 NovaComputeDeployment:
521 type: OS::TripleO::SoftwareDeployment
522 depends_on: NovaComputeUpgradeInitDeployment
524 name: NovaComputeDeployment
527 - server_not_blacklisted
528 - ['CREATE', 'UPDATE']
530 config: {get_resource: NovaComputeConfig}
531 server: {get_resource: NovaCompute}
533 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
535 # Resource for site-specific injection of root certificate
537 depends_on: NovaComputeDeployment
538 type: OS::TripleO::NodeTLSCAData
540 server: {get_resource: NovaCompute}
542 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
543 ComputeExtraConfigPre:
544 depends_on: NovaComputeDeployment
545 type: OS::TripleO::ComputeExtraConfigPre
547 server: {get_resource: NovaCompute}
549 # Hook for site-specific additional pre-deployment config,
550 # applying to all nodes, e.g node registration/unregistration
552 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
553 type: OS::TripleO::NodeExtraConfig
555 server: {get_resource: NovaCompute}
558 type: OS::TripleO::Tasks::PackageUpdate
561 type: OS::Heat::SoftwareDeployment
562 depends_on: NetworkDeployment
564 name: UpdateDeployment
567 - server_not_blacklisted
568 - ['CREATE', 'UPDATE']
570 config: {get_resource: UpdateConfig}
571 server: {get_resource: NovaCompute}
574 get_param: UpdateIdentifier
577 type: OS::TripleO::Ssh::HostPubKey
578 depends_on: NovaComputeDeployment
580 server: {get_resource: NovaCompute}
584 description: IP address of the server in the ctlplane network
585 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
587 description: IP address of the server in the external network
588 value: {get_attr: [ExternalPort, ip_address]}
589 internal_api_ip_address:
590 description: IP address of the server in the internal_api network
591 value: {get_attr: [InternalApiPort, ip_address]}
593 description: IP address of the server in the storage network
594 value: {get_attr: [StoragePort, ip_address]}
595 storage_mgmt_ip_address:
596 description: IP address of the server in the storage_mgmt network
597 value: {get_attr: [StorageMgmtPort, ip_address]}
599 description: IP address of the server in the tenant network
600 value: {get_attr: [TenantPort, ip_address]}
601 management_ip_address:
602 description: IP address of the server in the management network
603 value: {get_attr: [ManagementPort, ip_address]}
605 description: Hostname of the server
606 value: {get_attr: [NovaCompute, name]}
608 description: Mapping of network names to hostnames
610 external: {get_attr: [NetHostMap, value, external, fqdn]}
611 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
612 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
613 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
614 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
615 management: {get_attr: [NetHostMap, value, management, fqdn]}
616 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
619 Server's IP address and hostname in the /etc/hosts format
623 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
624 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
625 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
626 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
627 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
628 TENANTIP TENANTHOST.DOMAIN TENANTHOST
629 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
630 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
632 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
633 DOMAIN: {get_param: CloudDomain}
634 PRIMARYHOST: {get_attr: [NovaCompute, name]}
635 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
636 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
637 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
638 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
639 STORAGEIP: {get_attr: [StoragePort, ip_address]}
640 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
641 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
642 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
643 TENANTIP: {get_attr: [TenantPort, ip_address]}
644 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
645 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
646 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
647 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
648 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
650 description: Entry for ssh known hosts
653 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
654 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
655 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
656 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
657 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
658 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
659 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
660 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
662 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
663 DOMAIN: {get_param: CloudDomain}
664 PRIMARYHOST: {get_attr: [NovaCompute, name]}
665 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
666 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
667 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
668 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
669 STORAGEIP: {get_attr: [StoragePort, ip_address]}
670 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
671 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
672 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
673 TENANTIP: {get_attr: [TenantPort, ip_address]}
674 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
675 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
676 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
677 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
678 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
679 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
680 nova_server_resource:
681 description: Heat resource handle for the Nova compute server
683 {get_resource: NovaCompute}
684 condition: server_not_blacklisted
686 description: The os-collect-config configuration associated with this server resource
687 value: {get_attr: [NovaCompute, os_collect_config]}