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.
140 type: OS::TripleO::Server
143 command: {get_param: ConfigCommand}
145 image: {get_param: NovaImage}
147 get_param: ImageUpdatePolicy
148 flavor: {get_param: OvercloudComputeFlavor}
149 key_name: {get_param: KeyName}
152 user_data_format: SOFTWARE_CONFIG
153 user_data: {get_resource: UserData}
156 template: {get_param: Hostname}
157 params: {get_param: HostnameMap}
158 software_config_transport: {get_param: SoftwareConfigTransport}
161 - {get_param: ServerMetadata}
162 - {get_param: NovaComputeServerMetadata}
163 - {get_param: ServiceMetadataSettings}
164 scheduler_hints: {get_param: NovaComputeSchedulerHints}
166 # Combine the NodeAdminUserData and NodeUserData mime archives
168 type: OS::Heat::MultipartMime
171 - config: {get_resource: NodeAdminUserData}
173 - config: {get_resource: NodeUserData}
175 - config: {get_resource: RoleUserData}
178 # Creates the "heat-admin" user if configured via the environment
179 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
181 type: OS::TripleO::NodeAdminUserData
183 # For optional operator additional userdata
184 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
186 type: OS::TripleO::NodeUserData
188 # For optional operator role-specific userdata
189 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
191 type: OS::TripleO::Compute::NodeUserData
194 type: OS::TripleO::Compute::Ports::ExternalPort
196 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
197 IPPool: {get_param: NovaComputeIPs}
198 NodeIndex: {get_param: NodeIndex}
201 type: OS::TripleO::Compute::Ports::InternalApiPort
203 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
204 IPPool: {get_param: NovaComputeIPs}
205 NodeIndex: {get_param: NodeIndex}
208 type: OS::TripleO::Compute::Ports::StoragePort
210 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
211 IPPool: {get_param: NovaComputeIPs}
212 NodeIndex: {get_param: NodeIndex}
215 type: OS::TripleO::Compute::Ports::StorageMgmtPort
217 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
218 IPPool: {get_param: NovaComputeIPs}
219 NodeIndex: {get_param: NodeIndex}
222 type: OS::TripleO::Compute::Ports::TenantPort
224 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
225 IPPool: {get_param: NovaComputeIPs}
226 NodeIndex: {get_param: NodeIndex}
229 type: OS::TripleO::Compute::Ports::ManagementPort
231 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
232 IPPool: {get_param: NovaComputeIPs}
233 NodeIndex: {get_param: NodeIndex}
236 type: OS::TripleO::Network::Ports::NetIpMap
238 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
239 ExternalIp: {get_attr: [ExternalPort, ip_address]}
240 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
241 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
242 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
243 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
244 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
245 StorageIp: {get_attr: [StoragePort, ip_address]}
246 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
247 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
248 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
249 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
250 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
251 TenantIp: {get_attr: [TenantPort, ip_address]}
252 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
253 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
254 ManagementIp: {get_attr: [ManagementPort, ip_address]}
255 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
256 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
259 type: OS::Heat::Value
267 - - {get_attr: [NovaCompute, name]}
269 - {get_param: CloudDomain}
273 - - {get_attr: [NovaCompute, name]}
279 - - {get_attr: [NovaCompute, name]}
281 - {get_param: CloudDomain}
285 - - {get_attr: [NovaCompute, name]}
291 - - {get_attr: [NovaCompute, name]}
293 - {get_param: CloudDomain}
297 - - {get_attr: [NovaCompute, name]}
303 - - {get_attr: [NovaCompute, name]}
305 - {get_param: CloudDomain}
309 - - {get_attr: [NovaCompute, name]}
315 - - {get_attr: [NovaCompute, name]}
317 - {get_param: CloudDomain}
321 - - {get_attr: [NovaCompute, name]}
327 - - {get_attr: [NovaCompute, name]}
329 - {get_param: CloudDomain}
333 - - {get_attr: [NovaCompute, name]}
339 - - {get_attr: [NovaCompute, name]}
341 - {get_param: CloudDomain}
345 - - {get_attr: [NovaCompute, name]}
349 type: OS::TripleO::Compute::Net::SoftwareConfig
351 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
352 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
353 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
354 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
355 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
356 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
357 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
360 type: OS::TripleO::SoftwareDeployment
362 name: NetworkDeployment
363 config: {get_resource: NetworkConfig}
364 server: {get_resource: NovaCompute}
365 actions: {get_param: NetworkDeploymentActions}
367 bridge_name: {get_param: NeutronPhysicalBridge}
368 interface_name: {get_param: NeutronPublicInterface}
370 NovaComputeUpgradeInitConfig:
371 type: OS::Heat::SoftwareConfig
377 - - "#!/bin/bash\n\n"
378 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
379 - get_param: UpgradeInitCommand
381 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
382 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
383 NovaComputeUpgradeInitDeployment:
384 type: OS::Heat::SoftwareDeployment
385 depends_on: NetworkDeployment
387 name: NovaComputeUpgradeInitDeployment
388 server: {get_resource: NovaCompute}
389 config: {get_resource: NovaComputeUpgradeInitConfig}
392 type: OS::Heat::StructuredConfig
398 - heat_config_%{::deploy_config_name}
399 - compute_extraconfig
404 - bootstrap_node # provided by allNodesConfig
405 - all_nodes # provided by allNodesConfig
406 - vip_data # provided by allNodesConfig
408 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
409 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
410 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
411 - midonet_data # Optionally provided by AllNodesExtraConfig
412 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
413 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
414 merge_behavior: deeper
417 service_names: {get_param: ServiceNames}
418 sensu::subscriptions: {get_param: MonitoringSubscriptions}
421 - {get_param: ServiceConfigSettings}
422 - values: {get_attr: [NetIpMap, net_ip_map]}
423 compute_extraconfig: {get_param: NovaComputeExtraConfig}
424 extraconfig: {get_param: ExtraConfig}
426 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
427 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
428 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
429 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
430 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
431 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
432 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
434 NovaComputeDeployment:
435 type: OS::TripleO::SoftwareDeployment
436 depends_on: NovaComputeUpgradeInitDeployment
438 name: NovaComputeDeployment
439 config: {get_resource: NovaComputeConfig}
440 server: {get_resource: NovaCompute}
442 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
444 # Resource for site-specific injection of root certificate
446 depends_on: NovaComputeDeployment
447 type: OS::TripleO::NodeTLSCAData
449 server: {get_resource: NovaCompute}
451 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
452 ComputeExtraConfigPre:
453 depends_on: NovaComputeDeployment
454 type: OS::TripleO::ComputeExtraConfigPre
456 server: {get_resource: NovaCompute}
458 # Hook for site-specific additional pre-deployment config,
459 # applying to all nodes, e.g node registration/unregistration
461 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
462 type: OS::TripleO::NodeExtraConfig
464 server: {get_resource: NovaCompute}
467 type: OS::TripleO::Tasks::PackageUpdate
470 type: OS::Heat::SoftwareDeployment
472 name: UpdateDeployment
473 config: {get_resource: UpdateConfig}
474 server: {get_resource: NovaCompute}
477 get_param: UpdateIdentifier
481 description: IP address of the server in the ctlplane network
482 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
484 description: IP address of the server in the external network
485 value: {get_attr: [ExternalPort, ip_address]}
486 internal_api_ip_address:
487 description: IP address of the server in the internal_api network
488 value: {get_attr: [InternalApiPort, ip_address]}
490 description: IP address of the server in the storage network
491 value: {get_attr: [StoragePort, ip_address]}
492 storage_mgmt_ip_address:
493 description: IP address of the server in the storage_mgmt network
494 value: {get_attr: [StorageMgmtPort, ip_address]}
496 description: IP address of the server in the tenant network
497 value: {get_attr: [TenantPort, ip_address]}
498 management_ip_address:
499 description: IP address of the server in the management network
500 value: {get_attr: [ManagementPort, ip_address]}
502 description: Hostname of the server
503 value: {get_attr: [NovaCompute, name]}
505 description: Mapping of network names to hostnames
507 external: {get_attr: [NetHostMap, value, external, fqdn]}
508 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
509 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
510 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
511 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
512 management: {get_attr: [NetHostMap, value, management, fqdn]}
513 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
516 Server's IP address and hostname in the /etc/hosts format
520 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
521 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
522 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
523 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
524 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
525 TENANTIP TENANTHOST.DOMAIN TENANTHOST
526 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
527 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
529 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
530 DOMAIN: {get_param: CloudDomain}
531 PRIMARYHOST: {get_attr: [NovaCompute, name]}
532 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
533 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
534 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
535 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
536 STORAGEIP: {get_attr: [StoragePort, ip_address]}
537 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
538 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
539 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
540 TENANTIP: {get_attr: [TenantPort, ip_address]}
541 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
542 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
543 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
544 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
545 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
546 nova_server_resource:
547 description: Heat resource handle for the Nova compute server
549 {get_resource: NovaCompute}