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::TripleO::Compute::Net::SoftwareConfig
232 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
233 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
234 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
235 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
236 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
237 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
238 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
241 type: OS::TripleO::SoftwareDeployment
243 name: NetworkDeployment
244 config: {get_resource: NetworkConfig}
245 server: {get_resource: NovaCompute}
246 actions: {get_param: NetworkDeploymentActions}
248 bridge_name: {get_param: NeutronPhysicalBridge}
249 interface_name: {get_param: NeutronPublicInterface}
252 type: OS::Heat::StructuredConfig
254 group: os-apply-config
259 - heat_config_%{::deploy_config_name}
260 - compute_extraconfig
265 - bootstrap_node # provided by allNodesConfig
266 - all_nodes # provided by allNodesConfig
267 - vip_data # provided by allNodesConfig
269 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
270 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
271 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
272 - midonet_data # Optionally provided by AllNodesExtraConfig
273 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
274 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
275 merge_behavior: deeper
279 service_names: {get_param: ServiceNames}
280 sensu::subscriptions: {get_param: MonitoringSubscriptions}
284 - {get_param: ServiceConfigSettings}
285 - values: {get_attr: [NetIpMap, net_ip_map]}
287 mapped_data: {get_param: NovaComputeExtraConfig}
289 mapped_data: {get_param: ExtraConfig}
292 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
294 NovaComputeDeployment:
295 type: OS::TripleO::SoftwareDeployment
296 depends_on: NetworkDeployment
298 name: NovaComputeDeployment
299 config: {get_resource: NovaComputeConfig}
300 server: {get_resource: NovaCompute}
302 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
304 # Resource for site-specific injection of root certificate
306 depends_on: NovaComputeDeployment
307 type: OS::TripleO::NodeTLSCAData
309 server: {get_resource: NovaCompute}
311 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
312 ComputeExtraConfigPre:
313 depends_on: NovaComputeDeployment
314 type: OS::TripleO::ComputeExtraConfigPre
316 server: {get_resource: NovaCompute}
318 # Hook for site-specific additional pre-deployment config,
319 # applying to all nodes, e.g node registration/unregistration
321 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
322 type: OS::TripleO::NodeExtraConfig
324 server: {get_resource: NovaCompute}
327 type: OS::TripleO::Tasks::PackageUpdate
330 type: OS::Heat::SoftwareDeployment
332 name: UpdateDeployment
333 config: {get_resource: UpdateConfig}
334 server: {get_resource: NovaCompute}
337 get_param: UpdateIdentifier
341 description: IP address of the server in the ctlplane network
342 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
344 description: IP address of the server in the external network
345 value: {get_attr: [ExternalPort, ip_address]}
346 internal_api_ip_address:
347 description: IP address of the server in the internal_api network
348 value: {get_attr: [InternalApiPort, ip_address]}
350 description: IP address of the server in the storage network
351 value: {get_attr: [StoragePort, ip_address]}
352 storage_mgmt_ip_address:
353 description: IP address of the server in the storage_mgmt network
354 value: {get_attr: [StorageMgmtPort, ip_address]}
356 description: IP address of the server in the tenant network
357 value: {get_attr: [TenantPort, ip_address]}
358 management_ip_address:
359 description: IP address of the server in the management network
360 value: {get_attr: [ManagementPort, ip_address]}
362 description: Hostname of the server
363 value: {get_attr: [NovaCompute, name]}
365 description: Mapping of network names to hostnames
370 - - {get_attr: [NovaCompute, name]}
372 - {get_param: CloudDomain}
376 - - {get_attr: [NovaCompute, name]}
378 - {get_param: CloudDomain}
382 - - {get_attr: [NovaCompute, name]}
384 - {get_param: CloudDomain}
388 - - {get_attr: [NovaCompute, name]}
390 - {get_param: CloudDomain}
394 - - {get_attr: [NovaCompute, name]}
396 - {get_param: CloudDomain}
400 - - {get_attr: [NovaCompute, name]}
402 - {get_param: CloudDomain}
406 - - {get_attr: [NovaCompute, name]}
408 - {get_param: CloudDomain}
411 Server's IP address and hostname in the /etc/hosts format
415 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
416 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
417 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
418 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
419 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
420 TENANTIP TENANTHOST.DOMAIN TENANTHOST
421 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
422 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
424 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
425 DOMAIN: {get_param: CloudDomain}
426 PRIMARYHOST: {get_attr: [NovaCompute, name]}
427 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
431 - - {get_attr: [NovaCompute, name]}
433 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
437 - - {get_attr: [NovaCompute, name]}
439 STORAGEIP: {get_attr: [StoragePort, ip_address]}
443 - - {get_attr: [NovaCompute, name]}
445 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
449 - - {get_attr: [NovaCompute, name]}
451 TENANTIP: {get_attr: [TenantPort, ip_address]}
455 - - {get_attr: [NovaCompute, name]}
457 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
461 - - {get_attr: [NovaCompute, name]}
463 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
467 - - {get_attr: [NovaCompute, name]}
469 nova_server_resource:
470 description: Heat resource handle for the Nova compute server
472 {get_resource: NovaCompute}