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
131 type: OS::TripleO::Server
134 command: {get_param: ConfigCommand}
136 image: {get_param: NovaImage}
138 get_param: ImageUpdatePolicy
139 flavor: {get_param: OvercloudComputeFlavor}
140 key_name: {get_param: KeyName}
143 user_data_format: SOFTWARE_CONFIG
144 user_data: {get_resource: UserData}
147 template: {get_param: Hostname}
148 params: {get_param: HostnameMap}
149 software_config_transport: {get_param: SoftwareConfigTransport}
152 - {get_param: ServerMetadata}
153 - {get_param: NovaComputeServerMetadata}
154 scheduler_hints: {get_param: NovaComputeSchedulerHints}
156 # Combine the NodeAdminUserData and NodeUserData mime archives
158 type: OS::Heat::MultipartMime
161 - config: {get_resource: NodeAdminUserData}
163 - config: {get_resource: NodeUserData}
166 # Creates the "heat-admin" user if configured via the environment
167 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
169 type: OS::TripleO::NodeAdminUserData
171 # For optional operator additional userdata
172 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
174 type: OS::TripleO::NodeUserData
177 type: OS::TripleO::Compute::Ports::ExternalPort
179 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
180 IPPool: {get_param: NovaComputeIPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::Compute::Ports::InternalApiPort
186 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
187 IPPool: {get_param: NovaComputeIPs}
188 NodeIndex: {get_param: NodeIndex}
191 type: OS::TripleO::Compute::Ports::StoragePort
193 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
194 IPPool: {get_param: NovaComputeIPs}
195 NodeIndex: {get_param: NodeIndex}
198 type: OS::TripleO::Compute::Ports::StorageMgmtPort
200 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
201 IPPool: {get_param: NovaComputeIPs}
202 NodeIndex: {get_param: NodeIndex}
205 type: OS::TripleO::Compute::Ports::TenantPort
207 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
208 IPPool: {get_param: NovaComputeIPs}
209 NodeIndex: {get_param: NodeIndex}
212 type: OS::TripleO::Compute::Ports::ManagementPort
214 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
215 IPPool: {get_param: NovaComputeIPs}
216 NodeIndex: {get_param: NodeIndex}
219 type: OS::TripleO::Network::Ports::NetIpMap
221 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
222 ExternalIp: {get_attr: [ExternalPort, ip_address]}
223 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
224 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
225 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
226 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
227 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
228 StorageIp: {get_attr: [StoragePort, ip_address]}
229 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
230 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
231 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
232 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
233 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
234 TenantIp: {get_attr: [TenantPort, ip_address]}
235 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
236 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
237 ManagementIp: {get_attr: [ManagementPort, ip_address]}
238 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
239 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
242 type: OS::Heat::Value
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]}
322 - - {get_attr: [NovaCompute, name]}
324 - {get_param: CloudDomain}
328 - - {get_attr: [NovaCompute, name]}
332 type: OS::TripleO::Compute::Net::SoftwareConfig
334 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
335 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
336 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
337 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
338 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
339 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
340 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
343 type: OS::TripleO::SoftwareDeployment
345 name: NetworkDeployment
346 config: {get_resource: NetworkConfig}
347 server: {get_resource: NovaCompute}
348 actions: {get_param: NetworkDeploymentActions}
350 bridge_name: {get_param: NeutronPhysicalBridge}
351 interface_name: {get_param: NeutronPublicInterface}
354 type: OS::Heat::StructuredConfig
360 - heat_config_%{::deploy_config_name}
361 - compute_extraconfig
366 - bootstrap_node # provided by allNodesConfig
367 - all_nodes # provided by allNodesConfig
368 - vip_data # provided by allNodesConfig
370 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
371 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
372 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
373 - midonet_data # Optionally provided by AllNodesExtraConfig
374 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
375 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
376 merge_behavior: deeper
379 service_names: {get_param: ServiceNames}
380 sensu::subscriptions: {get_param: MonitoringSubscriptions}
383 - {get_param: ServiceConfigSettings}
384 - values: {get_attr: [NetIpMap, net_ip_map]}
385 compute_extraconfig: {get_param: NovaComputeExtraConfig}
386 extraconfig: {get_param: ExtraConfig}
388 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
389 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
390 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
391 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
392 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
393 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
394 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
396 NovaComputeDeployment:
397 type: OS::TripleO::SoftwareDeployment
398 depends_on: NetworkDeployment
400 name: NovaComputeDeployment
401 config: {get_resource: NovaComputeConfig}
402 server: {get_resource: NovaCompute}
404 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
406 # Resource for site-specific injection of root certificate
408 depends_on: NovaComputeDeployment
409 type: OS::TripleO::NodeTLSCAData
411 server: {get_resource: NovaCompute}
413 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
414 ComputeExtraConfigPre:
415 depends_on: NovaComputeDeployment
416 type: OS::TripleO::ComputeExtraConfigPre
418 server: {get_resource: NovaCompute}
420 # Hook for site-specific additional pre-deployment config,
421 # applying to all nodes, e.g node registration/unregistration
423 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
424 type: OS::TripleO::NodeExtraConfig
426 server: {get_resource: NovaCompute}
429 type: OS::TripleO::Tasks::PackageUpdate
432 type: OS::Heat::SoftwareDeployment
434 name: UpdateDeployment
435 config: {get_resource: UpdateConfig}
436 server: {get_resource: NovaCompute}
439 get_param: UpdateIdentifier
443 description: IP address of the server in the ctlplane network
444 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
446 description: IP address of the server in the external network
447 value: {get_attr: [ExternalPort, ip_address]}
448 internal_api_ip_address:
449 description: IP address of the server in the internal_api network
450 value: {get_attr: [InternalApiPort, ip_address]}
452 description: IP address of the server in the storage network
453 value: {get_attr: [StoragePort, ip_address]}
454 storage_mgmt_ip_address:
455 description: IP address of the server in the storage_mgmt network
456 value: {get_attr: [StorageMgmtPort, ip_address]}
458 description: IP address of the server in the tenant network
459 value: {get_attr: [TenantPort, ip_address]}
460 management_ip_address:
461 description: IP address of the server in the management network
462 value: {get_attr: [ManagementPort, ip_address]}
464 description: Hostname of the server
465 value: {get_attr: [NovaCompute, name]}
467 description: Mapping of network names to hostnames
469 external: {get_attr: [NetHostMap, value, external, fqdn]}
470 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
471 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
472 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
473 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
474 management: {get_attr: [NetHostMap, value, management, fqdn]}
475 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
478 Server's IP address and hostname in the /etc/hosts format
482 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
483 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
484 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
485 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
486 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
487 TENANTIP TENANTHOST.DOMAIN TENANTHOST
488 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
489 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
491 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
492 DOMAIN: {get_param: CloudDomain}
493 PRIMARYHOST: {get_attr: [NovaCompute, name]}
494 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
495 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
496 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
497 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
498 STORAGEIP: {get_attr: [StoragePort, ip_address]}
499 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
500 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
501 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
502 TENANTIP: {get_attr: [TenantPort, ip_address]}
503 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
504 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
505 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
506 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
507 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
508 nova_server_resource:
509 description: Heat resource handle for the Nova compute server
511 {get_resource: NovaCompute}