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
164 DeploymentSwiftDataMap:
167 Map of servers to Swift container and object for storing deployment data.
168 The keys are the Heat assigned hostnames, and the value is a map of the
169 container/object name in Swift. Example value:
170 overcloud-controller-0:
171 container: overcloud-controller
173 overcloud-controller-1:
174 container: overcloud-controller
176 overcloud-controller-2:
177 container: overcloud-controller
179 overcloud-novacompute-0:
180 container: overcloud-compute
185 deployment_swift_data_map_unset:
188 - DeploymentSwiftDataMap
189 - {get_param: Hostname}
191 server_not_blacklisted:
194 - {get_param: [DeploymentServerBlacklistDict, {get_param: Hostname}]}
200 type: OS::TripleO::ComputeServer
203 command: {get_param: ConfigCommand}
204 splay: {get_param: ConfigCollectSplay}
206 image: {get_param: NovaImage}
208 get_param: ImageUpdatePolicy
209 flavor: {get_param: OvercloudComputeFlavor}
210 key_name: {get_param: KeyName}
213 user_data_format: SOFTWARE_CONFIG
214 user_data: {get_resource: UserData}
217 template: {get_param: Hostname}
218 params: {get_param: HostnameMap}
219 software_config_transport: {get_param: SoftwareConfigTransport}
222 - {get_param: ServerMetadata}
223 - {get_param: NovaComputeServerMetadata}
224 - {get_param: ServiceMetadataSettings}
225 scheduler_hints: {get_param: NovaComputeSchedulerHints}
226 deployment_swift_data:
228 - deployment_swift_data_map_unset
230 - {get_param: [DeploymentSwiftDataMap,
231 {get_param: Hostname}]}
233 # Combine the NodeAdminUserData and NodeUserData mime archives
235 type: OS::Heat::MultipartMime
238 - config: {get_resource: NodeAdminUserData}
240 - config: {get_resource: NodeUserData}
242 - config: {get_resource: RoleUserData}
245 # Creates the "heat-admin" user if configured via the environment
246 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
248 type: OS::TripleO::NodeAdminUserData
250 # For optional operator additional userdata
251 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
253 type: OS::TripleO::NodeUserData
255 # For optional operator role-specific userdata
256 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
258 type: OS::TripleO::Compute::NodeUserData
261 type: OS::TripleO::Compute::Ports::ExternalPort
263 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
264 IPPool: {get_param: NovaComputeIPs}
265 NodeIndex: {get_param: NodeIndex}
268 type: OS::TripleO::Compute::Ports::InternalApiPort
270 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
271 IPPool: {get_param: NovaComputeIPs}
272 NodeIndex: {get_param: NodeIndex}
275 type: OS::TripleO::Compute::Ports::StoragePort
277 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
278 IPPool: {get_param: NovaComputeIPs}
279 NodeIndex: {get_param: NodeIndex}
282 type: OS::TripleO::Compute::Ports::StorageMgmtPort
284 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
285 IPPool: {get_param: NovaComputeIPs}
286 NodeIndex: {get_param: NodeIndex}
289 type: OS::TripleO::Compute::Ports::TenantPort
291 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
292 IPPool: {get_param: NovaComputeIPs}
293 NodeIndex: {get_param: NodeIndex}
296 type: OS::TripleO::Compute::Ports::ManagementPort
298 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
299 IPPool: {get_param: NovaComputeIPs}
300 NodeIndex: {get_param: NodeIndex}
303 type: OS::TripleO::Network::Ports::NetIpMap
305 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
306 ExternalIp: {get_attr: [ExternalPort, ip_address]}
307 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
308 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
309 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
310 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
311 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
312 StorageIp: {get_attr: [StoragePort, ip_address]}
313 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
314 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
315 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
316 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
317 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
318 TenantIp: {get_attr: [TenantPort, ip_address]}
319 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
320 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
321 ManagementIp: {get_attr: [ManagementPort, ip_address]}
322 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
323 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
326 type: OS::Heat::Value
334 - - {get_attr: [NovaCompute, name]}
336 - {get_param: CloudDomain}
340 - - {get_attr: [NovaCompute, name]}
346 - - {get_attr: [NovaCompute, name]}
348 - {get_param: CloudDomain}
352 - - {get_attr: [NovaCompute, name]}
358 - - {get_attr: [NovaCompute, name]}
360 - {get_param: CloudDomain}
364 - - {get_attr: [NovaCompute, name]}
370 - - {get_attr: [NovaCompute, name]}
372 - {get_param: CloudDomain}
376 - - {get_attr: [NovaCompute, name]}
382 - - {get_attr: [NovaCompute, name]}
384 - {get_param: CloudDomain}
388 - - {get_attr: [NovaCompute, name]}
394 - - {get_attr: [NovaCompute, name]}
396 - {get_param: CloudDomain}
400 - - {get_attr: [NovaCompute, name]}
406 - - {get_attr: [NovaCompute, name]}
408 - {get_param: CloudDomain}
412 - - {get_attr: [NovaCompute, name]}
416 type: OS::TripleO::Compute::PreNetworkConfig
418 server: {get_resource: NovaCompute}
419 RoleParameters: {get_param: RoleParameters}
420 ServiceNames: {get_param: ServiceNames}
423 type: OS::TripleO::Compute::Net::SoftwareConfig
425 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
426 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
427 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
428 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
429 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
430 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
431 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
434 type: OS::TripleO::SoftwareDeployment
435 depends_on: PreNetworkConfig
437 name: NetworkDeployment
440 - server_not_blacklisted
441 - {get_param: NetworkDeploymentActions}
443 config: {get_resource: NetworkConfig}
444 server: {get_resource: NovaCompute}
446 bridge_name: {get_param: NeutronPhysicalBridge}
447 interface_name: {get_param: NeutronPublicInterface}
449 NovaComputeUpgradeInitConfig:
450 type: OS::Heat::SoftwareConfig
456 - - "#!/bin/bash\n\n"
457 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
458 - get_param: UpgradeInitCommand
459 - get_param: UpgradeInitCommonCommand
461 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
462 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
463 NovaComputeUpgradeInitDeployment:
464 type: OS::Heat::SoftwareDeployment
465 depends_on: NetworkDeployment
467 name: NovaComputeUpgradeInitDeployment
470 - server_not_blacklisted
471 - ['CREATE', 'UPDATE']
473 server: {get_resource: NovaCompute}
474 config: {get_resource: NovaComputeUpgradeInitConfig}
477 type: OS::Heat::StructuredConfig
483 - heat_config_%{::deploy_config_name}
485 - compute_extraconfig
490 - bootstrap_node # provided by allNodesConfig
491 - all_nodes # provided by allNodesConfig
492 - vip_data # provided by allNodesConfig
494 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
495 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
496 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
497 - midonet_data # Optionally provided by AllNodesExtraConfig
498 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
499 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
500 merge_behavior: deeper
503 service_names: {get_param: ServiceNames}
504 sensu::subscriptions: {get_param: MonitoringSubscriptions}
507 - {get_param: ServiceConfigSettings}
508 - values: {get_attr: [NetIpMap, net_ip_map]}
509 compute_extraconfig: {get_param: NovaComputeExtraConfig}
510 extraconfig: {get_param: ExtraConfig}
512 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
513 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
514 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
515 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
516 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
517 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
518 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
519 fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
521 NovaComputeDeployment:
522 type: OS::TripleO::SoftwareDeployment
523 depends_on: NovaComputeUpgradeInitDeployment
525 name: NovaComputeDeployment
528 - server_not_blacklisted
529 - ['CREATE', 'UPDATE']
531 config: {get_resource: NovaComputeConfig}
532 server: {get_resource: NovaCompute}
534 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
536 # Resource for site-specific injection of root certificate
538 depends_on: NovaComputeDeployment
539 type: OS::TripleO::NodeTLSCAData
541 server: {get_resource: NovaCompute}
543 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
544 ComputeExtraConfigPre:
545 depends_on: NovaComputeDeployment
546 type: OS::TripleO::ComputeExtraConfigPre
548 server: {get_resource: NovaCompute}
550 # Hook for site-specific additional pre-deployment config,
551 # applying to all nodes, e.g node registration/unregistration
553 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
554 type: OS::TripleO::NodeExtraConfig
556 server: {get_resource: NovaCompute}
559 type: OS::TripleO::Tasks::PackageUpdate
562 type: OS::Heat::SoftwareDeployment
563 depends_on: NetworkDeployment
565 name: UpdateDeployment
568 - server_not_blacklisted
569 - ['CREATE', 'UPDATE']
571 config: {get_resource: UpdateConfig}
572 server: {get_resource: NovaCompute}
575 get_param: UpdateIdentifier
578 type: OS::TripleO::Ssh::HostPubKey
579 depends_on: NovaComputeDeployment
581 server: {get_resource: NovaCompute}
585 description: IP address of the server in the ctlplane network
586 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
588 description: IP address of the server in the external network
589 value: {get_attr: [ExternalPort, ip_address]}
590 internal_api_ip_address:
591 description: IP address of the server in the internal_api network
592 value: {get_attr: [InternalApiPort, ip_address]}
594 description: IP address of the server in the storage network
595 value: {get_attr: [StoragePort, ip_address]}
596 storage_mgmt_ip_address:
597 description: IP address of the server in the storage_mgmt network
598 value: {get_attr: [StorageMgmtPort, ip_address]}
600 description: IP address of the server in the tenant network
601 value: {get_attr: [TenantPort, ip_address]}
602 management_ip_address:
603 description: IP address of the server in the management network
604 value: {get_attr: [ManagementPort, ip_address]}
606 description: Hostname of the server
607 value: {get_attr: [NovaCompute, name]}
609 description: Mapping of network names to hostnames
611 external: {get_attr: [NetHostMap, value, external, fqdn]}
612 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
613 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
614 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
615 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
616 management: {get_attr: [NetHostMap, value, management, fqdn]}
617 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
620 Server's IP address and hostname in the /etc/hosts format
624 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
625 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
626 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
627 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
628 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
629 TENANTIP TENANTHOST.DOMAIN TENANTHOST
630 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
631 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
633 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
634 DOMAIN: {get_param: CloudDomain}
635 PRIMARYHOST: {get_attr: [NovaCompute, name]}
636 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
637 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
638 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
639 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
640 STORAGEIP: {get_attr: [StoragePort, ip_address]}
641 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
642 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
643 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
644 TENANTIP: {get_attr: [TenantPort, ip_address]}
645 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
646 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
647 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
648 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
649 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
651 description: Entry for ssh known hosts
654 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
655 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
656 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
657 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
658 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
659 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
660 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
661 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
663 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
664 DOMAIN: {get_param: CloudDomain}
665 PRIMARYHOST: {get_attr: [NovaCompute, name]}
666 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
667 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
668 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
669 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
670 STORAGEIP: {get_attr: [StoragePort, ip_address]}
671 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
672 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
673 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
674 TENANTIP: {get_attr: [TenantPort, ip_address]}
675 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
676 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
677 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
678 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
679 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
680 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
681 nova_server_resource:
682 description: Heat resource handle for the Nova compute server
684 {get_resource: NovaCompute}
685 condition: server_not_blacklisted
687 description: The os-collect-config configuration associated with this server resource
688 value: {get_attr: [NovaCompute, os_collect_config]}