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}
421 type: OS::TripleO::Compute::Net::SoftwareConfig
423 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
424 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
425 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
426 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
427 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
428 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
429 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
432 type: OS::TripleO::SoftwareDeployment
433 depends_on: PreNetworkConfig
435 name: NetworkDeployment
438 - server_not_blacklisted
439 - {get_param: NetworkDeploymentActions}
441 config: {get_resource: NetworkConfig}
442 server: {get_resource: NovaCompute}
444 bridge_name: {get_param: NeutronPhysicalBridge}
445 interface_name: {get_param: NeutronPublicInterface}
447 NovaComputeUpgradeInitConfig:
448 type: OS::Heat::SoftwareConfig
454 - - "#!/bin/bash\n\n"
455 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
456 - get_param: UpgradeInitCommand
457 - get_param: UpgradeInitCommonCommand
459 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
460 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
461 NovaComputeUpgradeInitDeployment:
462 type: OS::Heat::SoftwareDeployment
463 depends_on: NetworkDeployment
465 name: NovaComputeUpgradeInitDeployment
468 - server_not_blacklisted
469 - ['CREATE', 'UPDATE']
471 server: {get_resource: NovaCompute}
472 config: {get_resource: NovaComputeUpgradeInitConfig}
475 type: OS::Heat::StructuredConfig
481 - heat_config_%{::deploy_config_name}
483 - compute_extraconfig
488 - bootstrap_node # provided by allNodesConfig
489 - all_nodes # provided by allNodesConfig
490 - vip_data # provided by allNodesConfig
492 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
493 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
494 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
495 - midonet_data # Optionally provided by AllNodesExtraConfig
496 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
497 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
498 merge_behavior: deeper
501 service_names: {get_param: ServiceNames}
502 sensu::subscriptions: {get_param: MonitoringSubscriptions}
505 - {get_param: ServiceConfigSettings}
506 - values: {get_attr: [NetIpMap, net_ip_map]}
507 compute_extraconfig: {get_param: NovaComputeExtraConfig}
508 extraconfig: {get_param: ExtraConfig}
510 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
511 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
512 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
513 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
514 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
515 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
516 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
517 fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
519 NovaComputeDeployment:
520 type: OS::TripleO::SoftwareDeployment
521 depends_on: NovaComputeUpgradeInitDeployment
523 name: NovaComputeDeployment
526 - server_not_blacklisted
527 - ['CREATE', 'UPDATE']
529 config: {get_resource: NovaComputeConfig}
530 server: {get_resource: NovaCompute}
532 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
534 # Resource for site-specific injection of root certificate
536 depends_on: NovaComputeDeployment
537 type: OS::TripleO::NodeTLSCAData
539 server: {get_resource: NovaCompute}
541 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
542 ComputeExtraConfigPre:
543 depends_on: NovaComputeDeployment
544 type: OS::TripleO::ComputeExtraConfigPre
546 server: {get_resource: NovaCompute}
548 # Hook for site-specific additional pre-deployment config,
549 # applying to all nodes, e.g node registration/unregistration
551 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
552 type: OS::TripleO::NodeExtraConfig
554 server: {get_resource: NovaCompute}
557 type: OS::TripleO::Tasks::PackageUpdate
560 type: OS::Heat::SoftwareDeployment
561 depends_on: NetworkDeployment
563 name: UpdateDeployment
566 - server_not_blacklisted
567 - ['CREATE', 'UPDATE']
569 config: {get_resource: UpdateConfig}
570 server: {get_resource: NovaCompute}
573 get_param: UpdateIdentifier
576 type: OS::TripleO::Ssh::HostPubKey
577 depends_on: NovaComputeDeployment
579 server: {get_resource: NovaCompute}
583 description: IP address of the server in the ctlplane network
584 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
586 description: IP address of the server in the external network
587 value: {get_attr: [ExternalPort, ip_address]}
588 internal_api_ip_address:
589 description: IP address of the server in the internal_api network
590 value: {get_attr: [InternalApiPort, ip_address]}
592 description: IP address of the server in the storage network
593 value: {get_attr: [StoragePort, ip_address]}
594 storage_mgmt_ip_address:
595 description: IP address of the server in the storage_mgmt network
596 value: {get_attr: [StorageMgmtPort, ip_address]}
598 description: IP address of the server in the tenant network
599 value: {get_attr: [TenantPort, ip_address]}
600 management_ip_address:
601 description: IP address of the server in the management network
602 value: {get_attr: [ManagementPort, ip_address]}
604 description: Hostname of the server
605 value: {get_attr: [NovaCompute, name]}
607 description: Mapping of network names to hostnames
609 external: {get_attr: [NetHostMap, value, external, fqdn]}
610 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
611 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
612 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
613 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
614 management: {get_attr: [NetHostMap, value, management, fqdn]}
615 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
618 Server's IP address and hostname in the /etc/hosts format
622 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
623 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
624 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
625 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
626 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
627 TENANTIP TENANTHOST.DOMAIN TENANTHOST
628 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
629 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
631 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
632 DOMAIN: {get_param: CloudDomain}
633 PRIMARYHOST: {get_attr: [NovaCompute, name]}
634 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
635 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
636 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
637 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
638 STORAGEIP: {get_attr: [StoragePort, ip_address]}
639 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
640 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
641 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
642 TENANTIP: {get_attr: [TenantPort, ip_address]}
643 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
644 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
645 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
646 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
647 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
649 description: Entry for ssh known hosts
652 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
653 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
654 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
655 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
656 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
657 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
658 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
659 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
661 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
662 DOMAIN: {get_param: CloudDomain}
663 PRIMARYHOST: {get_attr: [NovaCompute, name]}
664 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
665 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
666 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
667 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
668 STORAGEIP: {get_attr: [StoragePort, ip_address]}
669 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
670 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
671 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
672 TENANTIP: {get_attr: [TenantPort, ip_address]}
673 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
674 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
675 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
676 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
677 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
678 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
679 nova_server_resource:
680 description: Heat resource handle for the Nova compute server
682 {get_resource: NovaCompute}
683 condition: server_not_blacklisted
685 description: The os-collect-config configuration associated with this server resource
686 value: {get_attr: [NovaCompute, os_collect_config]}