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
258 - heat_config_%{::deploy_config_name}
259 - compute_extraconfig
264 - bootstrap_node # provided by allNodesConfig
265 - all_nodes # provided by allNodesConfig
266 - vip_data # provided by allNodesConfig
268 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
269 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
270 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
271 - midonet_data # Optionally provided by AllNodesExtraConfig
272 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
273 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
274 merge_behavior: deeper
277 service_names: {get_param: ServiceNames}
278 sensu::subscriptions: {get_param: MonitoringSubscriptions}
281 - {get_param: ServiceConfigSettings}
282 - values: {get_attr: [NetIpMap, net_ip_map]}
283 compute_extraconfig: {get_param: NovaComputeExtraConfig}
284 extraconfig: {get_param: ExtraConfig}
286 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
288 NovaComputeDeployment:
289 type: OS::TripleO::SoftwareDeployment
290 depends_on: NetworkDeployment
292 name: NovaComputeDeployment
293 config: {get_resource: NovaComputeConfig}
294 server: {get_resource: NovaCompute}
296 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
298 # Resource for site-specific injection of root certificate
300 depends_on: NovaComputeDeployment
301 type: OS::TripleO::NodeTLSCAData
303 server: {get_resource: NovaCompute}
305 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
306 ComputeExtraConfigPre:
307 depends_on: NovaComputeDeployment
308 type: OS::TripleO::ComputeExtraConfigPre
310 server: {get_resource: NovaCompute}
312 # Hook for site-specific additional pre-deployment config,
313 # applying to all nodes, e.g node registration/unregistration
315 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
316 type: OS::TripleO::NodeExtraConfig
318 server: {get_resource: NovaCompute}
321 type: OS::TripleO::Tasks::PackageUpdate
324 type: OS::Heat::SoftwareDeployment
326 name: UpdateDeployment
327 config: {get_resource: UpdateConfig}
328 server: {get_resource: NovaCompute}
331 get_param: UpdateIdentifier
335 description: IP address of the server in the ctlplane network
336 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
338 description: IP address of the server in the external network
339 value: {get_attr: [ExternalPort, ip_address]}
340 internal_api_ip_address:
341 description: IP address of the server in the internal_api network
342 value: {get_attr: [InternalApiPort, ip_address]}
344 description: IP address of the server in the storage network
345 value: {get_attr: [StoragePort, ip_address]}
346 storage_mgmt_ip_address:
347 description: IP address of the server in the storage_mgmt network
348 value: {get_attr: [StorageMgmtPort, ip_address]}
350 description: IP address of the server in the tenant network
351 value: {get_attr: [TenantPort, ip_address]}
352 management_ip_address:
353 description: IP address of the server in the management network
354 value: {get_attr: [ManagementPort, ip_address]}
356 description: Hostname of the server
357 value: {get_attr: [NovaCompute, name]}
359 description: Mapping of network names to hostnames
364 - - {get_attr: [NovaCompute, name]}
366 - {get_param: CloudDomain}
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}
405 Server's IP address and hostname in the /etc/hosts format
409 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
410 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
411 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
412 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
413 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
414 TENANTIP TENANTHOST.DOMAIN TENANTHOST
415 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
416 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
418 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
419 DOMAIN: {get_param: CloudDomain}
420 PRIMARYHOST: {get_attr: [NovaCompute, name]}
421 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
425 - - {get_attr: [NovaCompute, name]}
427 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
431 - - {get_attr: [NovaCompute, name]}
433 STORAGEIP: {get_attr: [StoragePort, ip_address]}
437 - - {get_attr: [NovaCompute, name]}
439 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
443 - - {get_attr: [NovaCompute, name]}
445 TENANTIP: {get_attr: [TenantPort, ip_address]}
449 - - {get_attr: [NovaCompute, name]}
451 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
455 - - {get_attr: [NovaCompute, name]}
457 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
461 - - {get_attr: [NovaCompute, name]}
463 nova_server_resource:
464 description: Heat resource handle for the Nova compute server
466 {get_resource: NovaCompute}