1 heat_template_version: ocata
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
133 Command or script snippet to run on all overcloud nodes to
134 initialize the upgrade process. E.g. a repository switch.
136 UpgradeInitCommonCommand:
139 Common commands required by the upgrades process. This should not
140 normally be modified by the operator and is set and unset in the
141 major-upgrade-composable-steps.yaml and major-upgrade-converge.yaml
148 type: OS::TripleO::Server
151 command: {get_param: ConfigCommand}
153 image: {get_param: NovaImage}
155 get_param: ImageUpdatePolicy
156 flavor: {get_param: OvercloudComputeFlavor}
157 key_name: {get_param: KeyName}
160 user_data_format: SOFTWARE_CONFIG
161 user_data: {get_resource: UserData}
164 template: {get_param: Hostname}
165 params: {get_param: HostnameMap}
166 software_config_transport: {get_param: SoftwareConfigTransport}
169 - {get_param: ServerMetadata}
170 - {get_param: NovaComputeServerMetadata}
171 - {get_param: ServiceMetadataSettings}
172 scheduler_hints: {get_param: NovaComputeSchedulerHints}
174 # Combine the NodeAdminUserData and NodeUserData mime archives
176 type: OS::Heat::MultipartMime
179 - config: {get_resource: NodeAdminUserData}
181 - config: {get_resource: NodeUserData}
183 - config: {get_resource: RoleUserData}
186 # Creates the "heat-admin" user if configured via the environment
187 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
189 type: OS::TripleO::NodeAdminUserData
191 # For optional operator additional userdata
192 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
194 type: OS::TripleO::NodeUserData
196 # For optional operator role-specific userdata
197 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
199 type: OS::TripleO::Compute::NodeUserData
202 type: OS::TripleO::Compute::Ports::ExternalPort
204 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
205 IPPool: {get_param: NovaComputeIPs}
206 NodeIndex: {get_param: NodeIndex}
209 type: OS::TripleO::Compute::Ports::InternalApiPort
211 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
212 IPPool: {get_param: NovaComputeIPs}
213 NodeIndex: {get_param: NodeIndex}
216 type: OS::TripleO::Compute::Ports::StoragePort
218 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
219 IPPool: {get_param: NovaComputeIPs}
220 NodeIndex: {get_param: NodeIndex}
223 type: OS::TripleO::Compute::Ports::StorageMgmtPort
225 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
226 IPPool: {get_param: NovaComputeIPs}
227 NodeIndex: {get_param: NodeIndex}
230 type: OS::TripleO::Compute::Ports::TenantPort
232 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
233 IPPool: {get_param: NovaComputeIPs}
234 NodeIndex: {get_param: NodeIndex}
237 type: OS::TripleO::Compute::Ports::ManagementPort
239 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
240 IPPool: {get_param: NovaComputeIPs}
241 NodeIndex: {get_param: NodeIndex}
244 type: OS::TripleO::Network::Ports::NetIpMap
246 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
247 ExternalIp: {get_attr: [ExternalPort, ip_address]}
248 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
249 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
250 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
251 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
252 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
253 StorageIp: {get_attr: [StoragePort, ip_address]}
254 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
255 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
256 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
257 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
258 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
259 TenantIp: {get_attr: [TenantPort, ip_address]}
260 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
261 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
262 ManagementIp: {get_attr: [ManagementPort, ip_address]}
263 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
264 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
267 type: OS::Heat::Value
275 - - {get_attr: [NovaCompute, name]}
277 - {get_param: CloudDomain}
281 - - {get_attr: [NovaCompute, name]}
287 - - {get_attr: [NovaCompute, name]}
289 - {get_param: CloudDomain}
293 - - {get_attr: [NovaCompute, name]}
299 - - {get_attr: [NovaCompute, name]}
301 - {get_param: CloudDomain}
305 - - {get_attr: [NovaCompute, name]}
311 - - {get_attr: [NovaCompute, name]}
313 - {get_param: CloudDomain}
317 - - {get_attr: [NovaCompute, name]}
323 - - {get_attr: [NovaCompute, name]}
325 - {get_param: CloudDomain}
329 - - {get_attr: [NovaCompute, name]}
335 - - {get_attr: [NovaCompute, name]}
337 - {get_param: CloudDomain}
341 - - {get_attr: [NovaCompute, name]}
347 - - {get_attr: [NovaCompute, name]}
349 - {get_param: CloudDomain}
353 - - {get_attr: [NovaCompute, name]}
357 type: OS::TripleO::Compute::PreNetworkConfig
359 server: {get_resource: NovaCompute}
362 type: OS::TripleO::Compute::Net::SoftwareConfig
364 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
365 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
366 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
367 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
368 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
369 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
370 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
373 type: OS::TripleO::SoftwareDeployment
374 depends_on: PreNetworkConfig
376 name: NetworkDeployment
377 config: {get_resource: NetworkConfig}
378 server: {get_resource: NovaCompute}
379 actions: {get_param: NetworkDeploymentActions}
381 bridge_name: {get_param: NeutronPhysicalBridge}
382 interface_name: {get_param: NeutronPublicInterface}
384 NovaComputeUpgradeInitConfig:
385 type: OS::Heat::SoftwareConfig
391 - - "#!/bin/bash\n\n"
392 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
393 - get_param: UpgradeInitCommand
394 - get_param: UpgradeInitCommonCommand
396 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
397 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
398 NovaComputeUpgradeInitDeployment:
399 type: OS::Heat::SoftwareDeployment
400 depends_on: NetworkDeployment
402 name: NovaComputeUpgradeInitDeployment
403 server: {get_resource: NovaCompute}
404 config: {get_resource: NovaComputeUpgradeInitConfig}
407 type: OS::Heat::StructuredConfig
413 - heat_config_%{::deploy_config_name}
414 - compute_extraconfig
419 - bootstrap_node # provided by allNodesConfig
420 - all_nodes # provided by allNodesConfig
421 - vip_data # provided by allNodesConfig
423 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
424 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
425 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
426 - midonet_data # Optionally provided by AllNodesExtraConfig
427 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
428 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
429 merge_behavior: deeper
432 service_names: {get_param: ServiceNames}
433 sensu::subscriptions: {get_param: MonitoringSubscriptions}
436 - {get_param: ServiceConfigSettings}
437 - values: {get_attr: [NetIpMap, net_ip_map]}
438 compute_extraconfig: {get_param: NovaComputeExtraConfig}
439 extraconfig: {get_param: ExtraConfig}
441 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
442 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
443 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
444 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
445 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
446 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
447 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
449 NovaComputeDeployment:
450 type: OS::TripleO::SoftwareDeployment
451 depends_on: NovaComputeUpgradeInitDeployment
453 name: NovaComputeDeployment
454 config: {get_resource: NovaComputeConfig}
455 server: {get_resource: NovaCompute}
457 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
459 # Resource for site-specific injection of root certificate
461 depends_on: NovaComputeDeployment
462 type: OS::TripleO::NodeTLSCAData
464 server: {get_resource: NovaCompute}
466 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
467 ComputeExtraConfigPre:
468 depends_on: NovaComputeDeployment
469 type: OS::TripleO::ComputeExtraConfigPre
471 server: {get_resource: NovaCompute}
473 # Hook for site-specific additional pre-deployment config,
474 # applying to all nodes, e.g node registration/unregistration
476 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
477 type: OS::TripleO::NodeExtraConfig
479 server: {get_resource: NovaCompute}
482 type: OS::TripleO::Tasks::PackageUpdate
485 type: OS::Heat::SoftwareDeployment
486 depends_on: NetworkDeployment
488 name: UpdateDeployment
489 config: {get_resource: UpdateConfig}
490 server: {get_resource: NovaCompute}
493 get_param: UpdateIdentifier
496 type: OS::TripleO::Ssh::HostPubKey
497 depends_on: NovaComputeDeployment
499 server: {get_resource: NovaCompute}
503 description: IP address of the server in the ctlplane network
504 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
506 description: IP address of the server in the external network
507 value: {get_attr: [ExternalPort, ip_address]}
508 internal_api_ip_address:
509 description: IP address of the server in the internal_api network
510 value: {get_attr: [InternalApiPort, ip_address]}
512 description: IP address of the server in the storage network
513 value: {get_attr: [StoragePort, ip_address]}
514 storage_mgmt_ip_address:
515 description: IP address of the server in the storage_mgmt network
516 value: {get_attr: [StorageMgmtPort, ip_address]}
518 description: IP address of the server in the tenant network
519 value: {get_attr: [TenantPort, ip_address]}
520 management_ip_address:
521 description: IP address of the server in the management network
522 value: {get_attr: [ManagementPort, ip_address]}
524 description: Hostname of the server
525 value: {get_attr: [NovaCompute, name]}
527 description: Mapping of network names to hostnames
529 external: {get_attr: [NetHostMap, value, external, fqdn]}
530 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
531 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
532 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
533 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
534 management: {get_attr: [NetHostMap, value, management, fqdn]}
535 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
538 Server's IP address and hostname in the /etc/hosts format
542 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
543 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
544 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
545 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
546 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
547 TENANTIP TENANTHOST.DOMAIN TENANTHOST
548 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
549 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
551 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
552 DOMAIN: {get_param: CloudDomain}
553 PRIMARYHOST: {get_attr: [NovaCompute, name]}
554 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
555 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
556 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
557 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
558 STORAGEIP: {get_attr: [StoragePort, ip_address]}
559 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
560 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
561 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
562 TENANTIP: {get_attr: [TenantPort, ip_address]}
563 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
564 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
565 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
566 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
567 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
569 description: Entry for ssh known hosts
572 template: "PRIMARYIP,PRIMARYHOST.DOMAIN,PRIMARYHOST,\
573 EXTERNALIP,EXTERNALHOST.DOMAIN,EXTERNALHOST,\
574 INTERNAL_APIIP,INTERNAL_APIHOST.DOMAIN,INTERNAL_APIHOST,\
575 STORAGEIP,STORAGEHOST.DOMAIN,STORAGEHOST,\
576 STORAGE_MGMTIP,STORAGE_MGMTHOST.DOMAIN,STORAGE_MGMTHOST,\
577 TENANTIP,TENANTHOST.DOMAIN,TENANTHOST,\
578 MANAGEMENTIP,MANAGEMENTHOST.DOMAIN,MANAGEMENTHOST,\
579 CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
581 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
582 DOMAIN: {get_param: CloudDomain}
583 PRIMARYHOST: {get_attr: [NovaCompute, name]}
584 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
585 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
586 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
587 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
588 STORAGEIP: {get_attr: [StoragePort, ip_address]}
589 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
590 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
591 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
592 TENANTIP: {get_attr: [TenantPort, ip_address]}
593 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
594 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
595 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
596 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
597 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
598 HOSTSSHPUBKEY: {get_attr: [SshHostPubKey, ecdsa]}
599 nova_server_resource:
600 description: Heat resource handle for the Nova compute server
602 {get_resource: NovaCompute}