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: A port 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 should match the dhcp_domain
94 configured in the Undercloud neutron. Defaults to localdomain.
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
157 type: OS::TripleO::ComputeServer
160 command: {get_param: ConfigCommand}
161 splay: {get_param: ConfigCollectSplay}
163 image: {get_param: NovaImage}
165 get_param: ImageUpdatePolicy
166 flavor: {get_param: OvercloudComputeFlavor}
167 key_name: {get_param: KeyName}
170 user_data_format: SOFTWARE_CONFIG
171 user_data: {get_resource: UserData}
174 template: {get_param: Hostname}
175 params: {get_param: HostnameMap}
176 software_config_transport: {get_param: SoftwareConfigTransport}
179 - {get_param: ServerMetadata}
180 - {get_param: NovaComputeServerMetadata}
181 - {get_param: ServiceMetadataSettings}
182 scheduler_hints: {get_param: NovaComputeSchedulerHints}
184 # Combine the NodeAdminUserData and NodeUserData mime archives
186 type: OS::Heat::MultipartMime
189 - config: {get_resource: NodeAdminUserData}
191 - config: {get_resource: NodeUserData}
193 - config: {get_resource: RoleUserData}
196 # Creates the "heat-admin" user if configured via the environment
197 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
199 type: OS::TripleO::NodeAdminUserData
201 # For optional operator additional userdata
202 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
204 type: OS::TripleO::NodeUserData
206 # For optional operator role-specific userdata
207 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
209 type: OS::TripleO::Compute::NodeUserData
212 type: OS::TripleO::Compute::Ports::ExternalPort
214 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
215 IPPool: {get_param: NovaComputeIPs}
216 NodeIndex: {get_param: NodeIndex}
219 type: OS::TripleO::Compute::Ports::InternalApiPort
221 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
222 IPPool: {get_param: NovaComputeIPs}
223 NodeIndex: {get_param: NodeIndex}
226 type: OS::TripleO::Compute::Ports::StoragePort
228 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
229 IPPool: {get_param: NovaComputeIPs}
230 NodeIndex: {get_param: NodeIndex}
233 type: OS::TripleO::Compute::Ports::StorageMgmtPort
235 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
236 IPPool: {get_param: NovaComputeIPs}
237 NodeIndex: {get_param: NodeIndex}
240 type: OS::TripleO::Compute::Ports::TenantPort
242 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
243 IPPool: {get_param: NovaComputeIPs}
244 NodeIndex: {get_param: NodeIndex}
247 type: OS::TripleO::Compute::Ports::ManagementPort
249 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
250 IPPool: {get_param: NovaComputeIPs}
251 NodeIndex: {get_param: NodeIndex}
254 type: OS::TripleO::Network::Ports::NetIpMap
256 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
257 ExternalIp: {get_attr: [ExternalPort, ip_address]}
258 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
259 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
260 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
261 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
262 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
263 StorageIp: {get_attr: [StoragePort, ip_address]}
264 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
265 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
266 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
267 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
268 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
269 TenantIp: {get_attr: [TenantPort, ip_address]}
270 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
271 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
272 ManagementIp: {get_attr: [ManagementPort, ip_address]}
273 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
274 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
277 type: OS::Heat::Value
285 - - {get_attr: [NovaCompute, name]}
287 - {get_param: CloudDomain}
291 - - {get_attr: [NovaCompute, name]}
297 - - {get_attr: [NovaCompute, name]}
299 - {get_param: CloudDomain}
303 - - {get_attr: [NovaCompute, name]}
309 - - {get_attr: [NovaCompute, name]}
311 - {get_param: CloudDomain}
315 - - {get_attr: [NovaCompute, name]}
321 - - {get_attr: [NovaCompute, name]}
323 - {get_param: CloudDomain}
327 - - {get_attr: [NovaCompute, name]}
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]}
367 type: OS::TripleO::Compute::PreNetworkConfig
369 server: {get_resource: NovaCompute}
372 type: OS::TripleO::Compute::Net::SoftwareConfig
374 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
375 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
376 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
377 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
378 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
379 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
380 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
383 type: OS::TripleO::SoftwareDeployment
384 depends_on: PreNetworkConfig
386 name: NetworkDeployment
387 config: {get_resource: NetworkConfig}
388 server: {get_resource: NovaCompute}
389 actions: {get_param: NetworkDeploymentActions}
391 bridge_name: {get_param: NeutronPhysicalBridge}
392 interface_name: {get_param: NeutronPublicInterface}
394 NovaComputeUpgradeInitConfig:
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 NovaComputeUpgradeInitDeployment:
409 type: OS::Heat::SoftwareDeployment
410 depends_on: NetworkDeployment
412 name: NovaComputeUpgradeInitDeployment
413 server: {get_resource: NovaCompute}
414 config: {get_resource: NovaComputeUpgradeInitConfig}
417 type: OS::Heat::StructuredConfig
423 - heat_config_%{::deploy_config_name}
424 - compute_extraconfig
429 - bootstrap_node # provided by allNodesConfig
430 - all_nodes # provided by allNodesConfig
431 - vip_data # provided by allNodesConfig
433 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
434 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
435 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
436 - midonet_data # Optionally provided by AllNodesExtraConfig
437 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
438 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
439 merge_behavior: deeper
442 service_names: {get_param: ServiceNames}
443 sensu::subscriptions: {get_param: MonitoringSubscriptions}
446 - {get_param: ServiceConfigSettings}
447 - values: {get_attr: [NetIpMap, net_ip_map]}
448 compute_extraconfig: {get_param: NovaComputeExtraConfig}
449 extraconfig: {get_param: ExtraConfig}
451 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
452 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
453 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
454 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
455 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
456 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
457 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
459 NovaComputeDeployment:
460 type: OS::TripleO::SoftwareDeployment
461 depends_on: NovaComputeUpgradeInitDeployment
463 name: NovaComputeDeployment
464 config: {get_resource: NovaComputeConfig}
465 server: {get_resource: NovaCompute}
467 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
469 # Resource for site-specific injection of root certificate
471 depends_on: NovaComputeDeployment
472 type: OS::TripleO::NodeTLSCAData
474 server: {get_resource: NovaCompute}
476 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
477 ComputeExtraConfigPre:
478 depends_on: NovaComputeDeployment
479 type: OS::TripleO::ComputeExtraConfigPre
481 server: {get_resource: NovaCompute}
483 # Hook for site-specific additional pre-deployment config,
484 # applying to all nodes, e.g node registration/unregistration
486 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
487 type: OS::TripleO::NodeExtraConfig
489 server: {get_resource: NovaCompute}
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: NovaCompute}
503 get_param: UpdateIdentifier
506 type: OS::TripleO::Ssh::HostPubKey
507 depends_on: NovaComputeDeployment
509 server: {get_resource: NovaCompute}
513 description: IP address of the server in the ctlplane network
514 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
516 description: IP address of the server in the external network
517 value: {get_attr: [ExternalPort, ip_address]}
518 internal_api_ip_address:
519 description: IP address of the server in the internal_api network
520 value: {get_attr: [InternalApiPort, ip_address]}
522 description: IP address of the server in the storage network
523 value: {get_attr: [StoragePort, ip_address]}
524 storage_mgmt_ip_address:
525 description: IP address of the server in the storage_mgmt network
526 value: {get_attr: [StorageMgmtPort, ip_address]}
528 description: IP address of the server in the tenant network
529 value: {get_attr: [TenantPort, ip_address]}
530 management_ip_address:
531 description: IP address of the server in the management network
532 value: {get_attr: [ManagementPort, ip_address]}
534 description: Hostname of the server
535 value: {get_attr: [NovaCompute, name]}
537 description: Mapping of network names to hostnames
539 external: {get_attr: [NetHostMap, value, external, fqdn]}
540 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
541 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
542 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
543 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
544 management: {get_attr: [NetHostMap, value, management, fqdn]}
545 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
548 Server's IP address and hostname in the /etc/hosts format
552 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
553 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
554 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
555 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
556 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
557 TENANTIP TENANTHOST.DOMAIN TENANTHOST
558 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
559 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
561 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
562 DOMAIN: {get_param: CloudDomain}
563 PRIMARYHOST: {get_attr: [NovaCompute, name]}
564 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
565 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
566 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
567 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
568 STORAGEIP: {get_attr: [StoragePort, ip_address]}
569 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
570 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
571 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
572 TENANTIP: {get_attr: [TenantPort, ip_address]}
573 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
574 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
575 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
576 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
577 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
579 description: Entry for ssh known hosts
582 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
583 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
584 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
585 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
586 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
587 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
588 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
589 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
591 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
592 DOMAIN: {get_param: CloudDomain}
593 PRIMARYHOST: {get_attr: [NovaCompute, name]}
594 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
595 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
596 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
597 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
598 STORAGEIP: {get_attr: [StoragePort, ip_address]}
599 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
600 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
601 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
602 TENANTIP: {get_attr: [TenantPort, ip_address]}
603 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
604 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
605 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
606 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
607 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
608 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
609 nova_server_resource:
610 description: Heat resource handle for the Nova compute server
612 {get_resource: NovaCompute}