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::PreNetworkConfig
351 server: {get_resource: NovaCompute}
354 type: OS::TripleO::Compute::Net::SoftwareConfig
356 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
357 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
358 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
359 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
360 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
361 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
362 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
365 type: OS::TripleO::SoftwareDeployment
366 depends_on: PreNetworkConfig
368 name: NetworkDeployment
369 config: {get_resource: NetworkConfig}
370 server: {get_resource: NovaCompute}
371 actions: {get_param: NetworkDeploymentActions}
373 bridge_name: {get_param: NeutronPhysicalBridge}
374 interface_name: {get_param: NeutronPublicInterface}
376 NovaComputeUpgradeInitConfig:
377 type: OS::Heat::SoftwareConfig
383 - - "#!/bin/bash\n\n"
384 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
385 - get_param: UpgradeInitCommand
387 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
388 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
389 NovaComputeUpgradeInitDeployment:
390 type: OS::Heat::SoftwareDeployment
391 depends_on: NetworkDeployment
393 name: NovaComputeUpgradeInitDeployment
394 server: {get_resource: NovaCompute}
395 config: {get_resource: NovaComputeUpgradeInitConfig}
398 type: OS::Heat::StructuredConfig
404 - heat_config_%{::deploy_config_name}
405 - compute_extraconfig
410 - bootstrap_node # provided by allNodesConfig
411 - all_nodes # provided by allNodesConfig
412 - vip_data # provided by allNodesConfig
414 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
415 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
416 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
417 - midonet_data # Optionally provided by AllNodesExtraConfig
418 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
419 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
420 merge_behavior: deeper
423 service_names: {get_param: ServiceNames}
424 sensu::subscriptions: {get_param: MonitoringSubscriptions}
427 - {get_param: ServiceConfigSettings}
428 - values: {get_attr: [NetIpMap, net_ip_map]}
429 compute_extraconfig: {get_param: NovaComputeExtraConfig}
430 extraconfig: {get_param: ExtraConfig}
432 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
433 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
434 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
435 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
436 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
437 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
438 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
440 NovaComputeDeployment:
441 type: OS::TripleO::SoftwareDeployment
442 depends_on: NovaComputeUpgradeInitDeployment
444 name: NovaComputeDeployment
445 config: {get_resource: NovaComputeConfig}
446 server: {get_resource: NovaCompute}
448 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
450 # Resource for site-specific injection of root certificate
452 depends_on: NovaComputeDeployment
453 type: OS::TripleO::NodeTLSCAData
455 server: {get_resource: NovaCompute}
457 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
458 ComputeExtraConfigPre:
459 depends_on: NovaComputeDeployment
460 type: OS::TripleO::ComputeExtraConfigPre
462 server: {get_resource: NovaCompute}
464 # Hook for site-specific additional pre-deployment config,
465 # applying to all nodes, e.g node registration/unregistration
467 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
468 type: OS::TripleO::NodeExtraConfig
470 server: {get_resource: NovaCompute}
473 type: OS::TripleO::Tasks::PackageUpdate
476 type: OS::Heat::SoftwareDeployment
478 name: UpdateDeployment
479 config: {get_resource: UpdateConfig}
480 server: {get_resource: NovaCompute}
483 get_param: UpdateIdentifier
487 description: IP address of the server in the ctlplane network
488 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
490 description: IP address of the server in the external network
491 value: {get_attr: [ExternalPort, ip_address]}
492 internal_api_ip_address:
493 description: IP address of the server in the internal_api network
494 value: {get_attr: [InternalApiPort, ip_address]}
496 description: IP address of the server in the storage network
497 value: {get_attr: [StoragePort, ip_address]}
498 storage_mgmt_ip_address:
499 description: IP address of the server in the storage_mgmt network
500 value: {get_attr: [StorageMgmtPort, ip_address]}
502 description: IP address of the server in the tenant network
503 value: {get_attr: [TenantPort, ip_address]}
504 management_ip_address:
505 description: IP address of the server in the management network
506 value: {get_attr: [ManagementPort, ip_address]}
508 description: Hostname of the server
509 value: {get_attr: [NovaCompute, name]}
511 description: Mapping of network names to hostnames
513 external: {get_attr: [NetHostMap, value, external, fqdn]}
514 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
515 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
516 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
517 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
518 management: {get_attr: [NetHostMap, value, management, fqdn]}
519 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
522 Server's IP address and hostname in the /etc/hosts format
526 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
527 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
528 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
529 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
530 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
531 TENANTIP TENANTHOST.DOMAIN TENANTHOST
532 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
533 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
535 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
536 DOMAIN: {get_param: CloudDomain}
537 PRIMARYHOST: {get_attr: [NovaCompute, name]}
538 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
539 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
540 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
541 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
542 STORAGEIP: {get_attr: [StoragePort, ip_address]}
543 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
544 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
545 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
546 TENANTIP: {get_attr: [TenantPort, ip_address]}
547 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
548 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
549 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
550 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
551 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
552 nova_server_resource:
553 description: Heat resource handle for the Nova compute server
555 {get_resource: NovaCompute}