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.
98 Extra properties or metadata passed to Nova for the created nodes in
99 the overcloud. It's accessible via the Nova metadata API.
101 NovaComputeSchedulerHints:
103 description: Optional scheduler hints to pass to nova
105 ServiceConfigSettings:
109 type: comma_delimited_list
111 MonitoringSubscriptions:
112 type: comma_delimited_list
116 description: Command which will be run whenever configuration data changes
117 default: os-refresh-config --timeout 14400
122 type: OS::TripleO::Server
125 command: {get_param: ConfigCommand}
127 image: {get_param: NovaImage}
129 get_param: ImageUpdatePolicy
130 flavor: {get_param: OvercloudComputeFlavor}
131 key_name: {get_param: KeyName}
134 user_data_format: SOFTWARE_CONFIG
135 user_data: {get_resource: UserData}
138 template: {get_param: Hostname}
139 params: {get_param: HostnameMap}
140 software_config_transport: {get_param: SoftwareConfigTransport}
141 metadata: {get_param: ServerMetadata}
142 scheduler_hints: {get_param: NovaComputeSchedulerHints}
144 # Combine the NodeAdminUserData and NodeUserData mime archives
146 type: OS::Heat::MultipartMime
149 - config: {get_resource: NodeAdminUserData}
151 - config: {get_resource: NodeUserData}
154 # Creates the "heat-admin" user if configured via the environment
155 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
157 type: OS::TripleO::NodeAdminUserData
159 # For optional operator additional userdata
160 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
162 type: OS::TripleO::NodeUserData
165 type: OS::TripleO::Compute::Ports::ExternalPort
167 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
168 IPPool: {get_param: NovaComputeIPs}
169 NodeIndex: {get_param: NodeIndex}
172 type: OS::TripleO::Compute::Ports::InternalApiPort
174 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
175 IPPool: {get_param: NovaComputeIPs}
176 NodeIndex: {get_param: NodeIndex}
179 type: OS::TripleO::Compute::Ports::StoragePort
181 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
182 IPPool: {get_param: NovaComputeIPs}
183 NodeIndex: {get_param: NodeIndex}
186 type: OS::TripleO::Compute::Ports::StorageMgmtPort
188 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
189 IPPool: {get_param: NovaComputeIPs}
190 NodeIndex: {get_param: NodeIndex}
193 type: OS::TripleO::Compute::Ports::TenantPort
195 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
196 IPPool: {get_param: NovaComputeIPs}
197 NodeIndex: {get_param: NodeIndex}
200 type: OS::TripleO::Compute::Ports::ManagementPort
202 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
203 IPPool: {get_param: NovaComputeIPs}
204 NodeIndex: {get_param: NodeIndex}
207 type: OS::TripleO::Network::Ports::NetIpMap
209 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
210 ExternalIp: {get_attr: [ExternalPort, ip_address]}
211 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
212 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
213 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
214 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
215 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
216 StorageIp: {get_attr: [StoragePort, ip_address]}
217 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
218 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
219 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
220 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
221 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
222 TenantIp: {get_attr: [TenantPort, ip_address]}
223 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
224 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
225 ManagementIp: {get_attr: [ManagementPort, ip_address]}
226 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
227 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
230 type: OS::Heat::Value
238 - - {get_attr: [NovaCompute, name]}
240 - {get_param: CloudDomain}
244 - - {get_attr: [NovaCompute, name]}
250 - - {get_attr: [NovaCompute, name]}
252 - {get_param: CloudDomain}
256 - - {get_attr: [NovaCompute, name]}
262 - - {get_attr: [NovaCompute, name]}
264 - {get_param: CloudDomain}
268 - - {get_attr: [NovaCompute, name]}
274 - - {get_attr: [NovaCompute, name]}
276 - {get_param: CloudDomain}
280 - - {get_attr: [NovaCompute, name]}
286 - - {get_attr: [NovaCompute, name]}
288 - {get_param: CloudDomain}
292 - - {get_attr: [NovaCompute, name]}
298 - - {get_attr: [NovaCompute, name]}
300 - {get_param: CloudDomain}
304 - - {get_attr: [NovaCompute, name]}
310 - - {get_attr: [NovaCompute, name]}
312 - {get_param: CloudDomain}
316 - - {get_attr: [NovaCompute, name]}
320 type: OS::TripleO::Compute::Net::SoftwareConfig
322 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
323 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
324 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
325 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
326 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
327 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
328 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
331 type: OS::TripleO::SoftwareDeployment
333 name: NetworkDeployment
334 config: {get_resource: NetworkConfig}
335 server: {get_resource: NovaCompute}
336 actions: {get_param: NetworkDeploymentActions}
338 bridge_name: {get_param: NeutronPhysicalBridge}
339 interface_name: {get_param: NeutronPublicInterface}
342 type: OS::Heat::StructuredConfig
348 - heat_config_%{::deploy_config_name}
349 - compute_extraconfig
354 - bootstrap_node # provided by allNodesConfig
355 - all_nodes # provided by allNodesConfig
356 - vip_data # provided by allNodesConfig
358 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
359 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
360 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
361 - midonet_data # Optionally provided by AllNodesExtraConfig
362 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
363 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
364 merge_behavior: deeper
367 service_names: {get_param: ServiceNames}
368 sensu::subscriptions: {get_param: MonitoringSubscriptions}
371 - {get_param: ServiceConfigSettings}
372 - values: {get_attr: [NetIpMap, net_ip_map]}
373 compute_extraconfig: {get_param: NovaComputeExtraConfig}
374 extraconfig: {get_param: ExtraConfig}
376 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
377 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
378 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
379 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
380 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
381 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
382 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
384 NovaComputeDeployment:
385 type: OS::TripleO::SoftwareDeployment
386 depends_on: NetworkDeployment
388 name: NovaComputeDeployment
389 config: {get_resource: NovaComputeConfig}
390 server: {get_resource: NovaCompute}
392 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
394 # Resource for site-specific injection of root certificate
396 depends_on: NovaComputeDeployment
397 type: OS::TripleO::NodeTLSCAData
399 server: {get_resource: NovaCompute}
401 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
402 ComputeExtraConfigPre:
403 depends_on: NovaComputeDeployment
404 type: OS::TripleO::ComputeExtraConfigPre
406 server: {get_resource: NovaCompute}
408 # Hook for site-specific additional pre-deployment config,
409 # applying to all nodes, e.g node registration/unregistration
411 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
412 type: OS::TripleO::NodeExtraConfig
414 server: {get_resource: NovaCompute}
417 type: OS::TripleO::Tasks::PackageUpdate
420 type: OS::Heat::SoftwareDeployment
422 name: UpdateDeployment
423 config: {get_resource: UpdateConfig}
424 server: {get_resource: NovaCompute}
427 get_param: UpdateIdentifier
431 description: IP address of the server in the ctlplane network
432 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
434 description: IP address of the server in the external network
435 value: {get_attr: [ExternalPort, ip_address]}
436 internal_api_ip_address:
437 description: IP address of the server in the internal_api network
438 value: {get_attr: [InternalApiPort, ip_address]}
440 description: IP address of the server in the storage network
441 value: {get_attr: [StoragePort, ip_address]}
442 storage_mgmt_ip_address:
443 description: IP address of the server in the storage_mgmt network
444 value: {get_attr: [StorageMgmtPort, ip_address]}
446 description: IP address of the server in the tenant network
447 value: {get_attr: [TenantPort, ip_address]}
448 management_ip_address:
449 description: IP address of the server in the management network
450 value: {get_attr: [ManagementPort, ip_address]}
452 description: Hostname of the server
453 value: {get_attr: [NovaCompute, name]}
455 description: Mapping of network names to hostnames
457 external: {get_attr: [NetHostMap, value, external, fqdn]}
458 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
459 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
460 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
461 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
462 management: {get_attr: [NetHostMap, value, management, fqdn]}
463 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
466 Server's IP address and hostname in the /etc/hosts format
470 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
471 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
472 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
473 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
474 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
475 TENANTIP TENANTHOST.DOMAIN TENANTHOST
476 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
477 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
479 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
480 DOMAIN: {get_param: CloudDomain}
481 PRIMARYHOST: {get_attr: [NovaCompute, name]}
482 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
483 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
484 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
485 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
486 STORAGEIP: {get_attr: [StoragePort, ip_address]}
487 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
488 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
489 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
490 TENANTIP: {get_attr: [TenantPort, ip_address]}
491 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
492 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
493 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
494 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
495 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
496 nova_server_resource:
497 description: Heat resource handle for the Nova compute server
499 {get_resource: NovaCompute}