1 heat_template_version: 2016-10-14
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
125 description: Command which will be run whenever configuration data changes
126 default: os-refresh-config --timeout 14400
130 Command or script snippet to run on all overcloud nodes to
131 initialize the upgrade process. E.g. a repository switch.
137 type: OS::TripleO::Server
140 command: {get_param: ConfigCommand}
142 image: {get_param: NovaImage}
144 get_param: ImageUpdatePolicy
145 flavor: {get_param: OvercloudComputeFlavor}
146 key_name: {get_param: KeyName}
149 user_data_format: SOFTWARE_CONFIG
150 user_data: {get_resource: UserData}
153 template: {get_param: Hostname}
154 params: {get_param: HostnameMap}
155 software_config_transport: {get_param: SoftwareConfigTransport}
158 - {get_param: ServerMetadata}
159 - {get_param: NovaComputeServerMetadata}
160 scheduler_hints: {get_param: NovaComputeSchedulerHints}
162 # Combine the NodeAdminUserData and NodeUserData mime archives
164 type: OS::Heat::MultipartMime
167 - config: {get_resource: NodeAdminUserData}
169 - config: {get_resource: NodeUserData}
172 # Creates the "heat-admin" user if configured via the environment
173 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
175 type: OS::TripleO::NodeAdminUserData
177 # For optional operator additional userdata
178 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
180 type: OS::TripleO::NodeUserData
183 type: OS::TripleO::Compute::Ports::ExternalPort
185 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
186 IPPool: {get_param: NovaComputeIPs}
187 NodeIndex: {get_param: NodeIndex}
190 type: OS::TripleO::Compute::Ports::InternalApiPort
192 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
193 IPPool: {get_param: NovaComputeIPs}
194 NodeIndex: {get_param: NodeIndex}
197 type: OS::TripleO::Compute::Ports::StoragePort
199 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
200 IPPool: {get_param: NovaComputeIPs}
201 NodeIndex: {get_param: NodeIndex}
204 type: OS::TripleO::Compute::Ports::StorageMgmtPort
206 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
207 IPPool: {get_param: NovaComputeIPs}
208 NodeIndex: {get_param: NodeIndex}
211 type: OS::TripleO::Compute::Ports::TenantPort
213 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
214 IPPool: {get_param: NovaComputeIPs}
215 NodeIndex: {get_param: NodeIndex}
218 type: OS::TripleO::Compute::Ports::ManagementPort
220 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
221 IPPool: {get_param: NovaComputeIPs}
222 NodeIndex: {get_param: NodeIndex}
225 type: OS::TripleO::Network::Ports::NetIpMap
227 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
228 ExternalIp: {get_attr: [ExternalPort, ip_address]}
229 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
230 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
231 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
232 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
233 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
234 StorageIp: {get_attr: [StoragePort, ip_address]}
235 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
236 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
237 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
238 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
239 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
240 TenantIp: {get_attr: [TenantPort, ip_address]}
241 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
242 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
243 ManagementIp: {get_attr: [ManagementPort, ip_address]}
244 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
245 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
248 type: OS::Heat::Value
256 - - {get_attr: [NovaCompute, name]}
258 - {get_param: CloudDomain}
262 - - {get_attr: [NovaCompute, name]}
268 - - {get_attr: [NovaCompute, name]}
270 - {get_param: CloudDomain}
274 - - {get_attr: [NovaCompute, name]}
280 - - {get_attr: [NovaCompute, name]}
282 - {get_param: CloudDomain}
286 - - {get_attr: [NovaCompute, name]}
292 - - {get_attr: [NovaCompute, name]}
294 - {get_param: CloudDomain}
298 - - {get_attr: [NovaCompute, name]}
304 - - {get_attr: [NovaCompute, name]}
306 - {get_param: CloudDomain}
310 - - {get_attr: [NovaCompute, name]}
316 - - {get_attr: [NovaCompute, name]}
318 - {get_param: CloudDomain}
322 - - {get_attr: [NovaCompute, name]}
328 - - {get_attr: [NovaCompute, name]}
330 - {get_param: CloudDomain}
334 - - {get_attr: [NovaCompute, name]}
338 type: OS::TripleO::Compute::Net::SoftwareConfig
340 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
341 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
342 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
343 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
344 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
345 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
346 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
349 type: OS::TripleO::SoftwareDeployment
351 name: NetworkDeployment
352 config: {get_resource: NetworkConfig}
353 server: {get_resource: NovaCompute}
354 actions: {get_param: NetworkDeploymentActions}
356 bridge_name: {get_param: NeutronPhysicalBridge}
357 interface_name: {get_param: NeutronPublicInterface}
359 NovaComputeUpgradeInitConfig:
360 type: OS::Heat::SoftwareConfig
366 - - "#!/bin/bash\n\n"
367 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
368 - get_param: UpgradeInitCommand
370 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
371 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
372 NovaComputeUpgradeInitDeployment:
373 type: OS::Heat::SoftwareDeployment
374 depends_on: NetworkDeployment
376 name: NovaComputeUpgradeInitDeployment
377 server: {get_resource: NovaCompute}
378 config: {get_resource: NovaComputeUpgradeInitConfig}
381 type: OS::Heat::StructuredConfig
387 - heat_config_%{::deploy_config_name}
388 - compute_extraconfig
393 - bootstrap_node # provided by allNodesConfig
394 - all_nodes # provided by allNodesConfig
395 - vip_data # provided by allNodesConfig
397 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
398 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
399 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
400 - midonet_data # Optionally provided by AllNodesExtraConfig
401 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
402 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
403 merge_behavior: deeper
406 service_names: {get_param: ServiceNames}
407 sensu::subscriptions: {get_param: MonitoringSubscriptions}
410 - {get_param: ServiceConfigSettings}
411 - values: {get_attr: [NetIpMap, net_ip_map]}
412 compute_extraconfig: {get_param: NovaComputeExtraConfig}
413 extraconfig: {get_param: ExtraConfig}
415 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
416 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
417 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
418 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
419 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
420 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
421 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
423 NovaComputeDeployment:
424 type: OS::TripleO::SoftwareDeployment
425 depends_on: NovaComputeUpgradeInitDeployment
427 name: NovaComputeDeployment
428 config: {get_resource: NovaComputeConfig}
429 server: {get_resource: NovaCompute}
431 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
433 # Resource for site-specific injection of root certificate
435 depends_on: NovaComputeDeployment
436 type: OS::TripleO::NodeTLSCAData
438 server: {get_resource: NovaCompute}
440 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
441 ComputeExtraConfigPre:
442 depends_on: NovaComputeDeployment
443 type: OS::TripleO::ComputeExtraConfigPre
445 server: {get_resource: NovaCompute}
447 # Hook for site-specific additional pre-deployment config,
448 # applying to all nodes, e.g node registration/unregistration
450 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
451 type: OS::TripleO::NodeExtraConfig
453 server: {get_resource: NovaCompute}
456 type: OS::TripleO::Tasks::PackageUpdate
459 type: OS::Heat::SoftwareDeployment
461 name: UpdateDeployment
462 config: {get_resource: UpdateConfig}
463 server: {get_resource: NovaCompute}
466 get_param: UpdateIdentifier
470 description: IP address of the server in the ctlplane network
471 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
473 description: IP address of the server in the external network
474 value: {get_attr: [ExternalPort, ip_address]}
475 internal_api_ip_address:
476 description: IP address of the server in the internal_api network
477 value: {get_attr: [InternalApiPort, ip_address]}
479 description: IP address of the server in the storage network
480 value: {get_attr: [StoragePort, ip_address]}
481 storage_mgmt_ip_address:
482 description: IP address of the server in the storage_mgmt network
483 value: {get_attr: [StorageMgmtPort, ip_address]}
485 description: IP address of the server in the tenant network
486 value: {get_attr: [TenantPort, ip_address]}
487 management_ip_address:
488 description: IP address of the server in the management network
489 value: {get_attr: [ManagementPort, ip_address]}
491 description: Hostname of the server
492 value: {get_attr: [NovaCompute, name]}
494 description: Mapping of network names to hostnames
496 external: {get_attr: [NetHostMap, value, external, fqdn]}
497 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
498 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
499 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
500 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
501 management: {get_attr: [NetHostMap, value, management, fqdn]}
502 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
505 Server's IP address and hostname in the /etc/hosts format
509 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
510 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
511 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
512 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
513 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
514 TENANTIP TENANTHOST.DOMAIN TENANTHOST
515 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
516 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
518 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
519 DOMAIN: {get_param: CloudDomain}
520 PRIMARYHOST: {get_attr: [NovaCompute, name]}
521 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
522 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
523 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
524 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
525 STORAGEIP: {get_attr: [StoragePort, ip_address]}
526 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
527 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
528 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
529 TENANTIP: {get_attr: [TenantPort, ip_address]}
530 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
531 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
532 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
533 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
534 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
535 nova_server_resource:
536 description: Heat resource handle for the Nova compute server
538 {get_resource: NovaCompute}