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.
47 default: '' # Has to be here because of the ignored empty value bug
48 NovaComputeExtraConfig:
51 NovaCompute specific configuration to inject into the cluster. Same
52 structure as ExtraConfig.
59 default: '' # Has to be here because of the ignored empty value bug
62 description: Set to true to enable package installation via Puppet
66 description: Mapping of service_name -> network name. Typically set
67 via parameter_defaults in the resource registry.
71 description: Mapping of service endpoint -> protocol. Typically set
72 via parameter_defaults in the resource registry.
78 Setting to a previously unused value during stack-update will trigger
79 package update on all nodes
82 default: '' # Defaults to Heat created hostname
86 description: Optional mapping to override hostnames
87 NetworkDeploymentActions:
88 type: comma_delimited_list
90 Heat action when to apply network configuration changes
92 SoftwareConfigTransport:
93 default: POLL_SERVER_CFN
95 How the server should receive the metadata required for software configuration.
98 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
102 The DNS domain used for the hosts. This should match the dhcp_domain
103 configured in the Undercloud neutron. Defaults to localdomain.
107 Extra properties or metadata passed to Nova for the created nodes in
108 the overcloud. It's accessible via the Nova metadata API.
110 NovaComputeSchedulerHints:
112 description: Optional scheduler hints to pass to nova
114 ServiceConfigSettings:
118 type: comma_delimited_list
122 description: Command which will be run whenever configuration data changes
123 default: os-refresh-config --timeout 14400
128 type: OS::TripleO::Server
131 command: {get_param: ConfigCommand}
133 image: {get_param: NovaImage}
135 get_param: ImageUpdatePolicy
136 flavor: {get_param: OvercloudComputeFlavor}
137 key_name: {get_param: KeyName}
140 user_data_format: SOFTWARE_CONFIG
141 user_data: {get_resource: UserData}
144 template: {get_param: Hostname}
145 params: {get_param: HostnameMap}
146 software_config_transport: {get_param: SoftwareConfigTransport}
147 metadata: {get_param: ServerMetadata}
148 scheduler_hints: {get_param: NovaComputeSchedulerHints}
150 # Combine the NodeAdminUserData and NodeUserData mime archives
152 type: OS::Heat::MultipartMime
155 - config: {get_resource: NodeAdminUserData}
157 - config: {get_resource: NodeUserData}
160 # Creates the "heat-admin" user if configured via the environment
161 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
163 type: OS::TripleO::NodeAdminUserData
165 # For optional operator additional userdata
166 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
168 type: OS::TripleO::NodeUserData
171 type: OS::TripleO::Compute::Ports::ExternalPort
173 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
174 IPPool: {get_param: NovaComputeIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::Compute::Ports::InternalApiPort
180 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
181 IPPool: {get_param: NovaComputeIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::Compute::Ports::StoragePort
187 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
188 IPPool: {get_param: NovaComputeIPs}
189 NodeIndex: {get_param: NodeIndex}
192 type: OS::TripleO::Compute::Ports::StorageMgmtPort
194 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
195 IPPool: {get_param: NovaComputeIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::Compute::Ports::TenantPort
201 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
202 IPPool: {get_param: NovaComputeIPs}
203 NodeIndex: {get_param: NodeIndex}
206 type: OS::TripleO::Compute::Ports::ManagementPort
208 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
209 IPPool: {get_param: NovaComputeIPs}
210 NodeIndex: {get_param: NodeIndex}
213 type: OS::TripleO::Network::Ports::NetIpMap
215 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
216 ExternalIp: {get_attr: [ExternalPort, ip_address]}
217 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
218 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
219 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
220 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
221 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
222 StorageIp: {get_attr: [StoragePort, ip_address]}
223 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
224 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
225 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
226 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
227 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
228 TenantIp: {get_attr: [TenantPort, ip_address]}
229 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
230 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
231 ManagementIp: {get_attr: [ManagementPort, ip_address]}
232 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
233 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
236 type: OS::TripleO::Compute::Net::SoftwareConfig
238 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
239 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
240 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
241 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
242 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
243 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
244 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
247 type: OS::TripleO::SoftwareDeployment
249 name: NetworkDeployment
250 config: {get_resource: NetworkConfig}
251 server: {get_resource: NovaCompute}
252 actions: {get_param: NetworkDeploymentActions}
254 bridge_name: {get_param: NeutronPhysicalBridge}
255 interface_name: {get_param: NeutronPublicInterface}
258 type: OS::Heat::StructuredConfig
260 group: os-apply-config
265 - heat_config_%{::deploy_config_name}
266 - compute_extraconfig
271 - ceph_cluster # provided by CephClusterConfig
272 - all_nodes # provided by allNodesConfig
275 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
276 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
277 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
278 - midonet_data # Optionally provided by AllNodesExtraConfig
279 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
280 merge_behavior: deeper
284 service_names: {get_param: ServiceNames}
288 - {get_param: ServiceConfigSettings}
289 - values: {get_attr: [NetIpMap, net_ip_map]}
291 mapped_data: {get_param: NovaComputeExtraConfig}
293 mapped_data: {get_param: ExtraConfig}
296 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
297 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
298 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
301 nova_api_host: {get_input: nova_api_host}
302 nova::compute::vncproxy_host: {get_input: nova_public_ip}
303 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
304 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
306 tripleo::packages::enable_install: {get_input: enable_package_install}
307 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
309 NovaComputeDeployment:
310 type: OS::TripleO::SoftwareDeployment
311 depends_on: NetworkDeployment
313 name: NovaComputeDeployment
314 config: {get_resource: NovaComputeConfig}
315 server: {get_resource: NovaCompute}
317 nova_public_ip: {get_param: NovaPublicIP}
318 nova_api_host: {get_param: NovaApiHost}
319 nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
320 neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
321 enable_package_install: {get_param: EnablePackageInstall}
322 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
324 # Resource for site-specific injection of root certificate
326 depends_on: NovaComputeDeployment
327 type: OS::TripleO::NodeTLSCAData
329 server: {get_resource: NovaCompute}
331 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
332 ComputeExtraConfigPre:
333 depends_on: NovaComputeDeployment
334 type: OS::TripleO::ComputeExtraConfigPre
336 server: {get_resource: NovaCompute}
338 # Hook for site-specific additional pre-deployment config,
339 # applying to all nodes, e.g node registration/unregistration
341 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
342 type: OS::TripleO::NodeExtraConfig
344 server: {get_resource: NovaCompute}
347 type: OS::TripleO::Tasks::PackageUpdate
350 type: OS::Heat::SoftwareDeployment
352 name: UpdateDeployment
353 config: {get_resource: UpdateConfig}
354 server: {get_resource: NovaCompute}
357 get_param: UpdateIdentifier
361 description: IP address of the server in the ctlplane network
362 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
364 description: IP address of the server in the external network
365 value: {get_attr: [ExternalPort, ip_address]}
366 internal_api_ip_address:
367 description: IP address of the server in the internal_api network
368 value: {get_attr: [InternalApiPort, ip_address]}
370 description: IP address of the server in the storage network
371 value: {get_attr: [StoragePort, ip_address]}
372 storage_mgmt_ip_address:
373 description: IP address of the server in the storage_mgmt network
374 value: {get_attr: [StorageMgmtPort, ip_address]}
376 description: IP address of the server in the tenant network
377 value: {get_attr: [TenantPort, ip_address]}
378 management_ip_address:
379 description: IP address of the server in the management network
380 value: {get_attr: [ManagementPort, ip_address]}
382 description: Hostname of the server
383 value: {get_attr: [NovaCompute, name]}
386 Server's IP address and hostname in the /etc/hosts format
390 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
391 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
392 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
393 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
394 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
395 TENANTIP TENANTHOST.DOMAIN TENANTHOST
396 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
398 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
399 DOMAIN: {get_param: CloudDomain}
400 PRIMARYHOST: {get_attr: [NovaCompute, name]}
401 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
405 - - {get_attr: [NovaCompute, name]}
407 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
411 - - {get_attr: [NovaCompute, name]}
413 STORAGEIP: {get_attr: [StoragePort, ip_address]}
417 - - {get_attr: [NovaCompute, name]}
419 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
423 - - {get_attr: [NovaCompute, name]}
425 TENANTIP: {get_attr: [TenantPort, ip_address]}
429 - - {get_attr: [NovaCompute, name]}
431 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
435 - - {get_attr: [NovaCompute, name]}
437 nova_server_resource:
438 description: Heat resource handle for the Nova compute server
440 {get_resource: NovaCompute}