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: Mapping of service_name -> network name. Typically set
63 via parameter_defaults in the resource registry.
67 description: Mapping of service endpoint -> protocol. Typically set
68 via parameter_defaults in the resource registry.
74 Setting to a previously unused value during stack-update will trigger
75 package update on all nodes
78 default: '' # Defaults to Heat created hostname
82 description: Optional mapping to override hostnames
83 NetworkDeploymentActions:
84 type: comma_delimited_list
86 Heat action when to apply network configuration changes
88 SoftwareConfigTransport:
89 default: POLL_SERVER_CFN
91 How the server should receive the metadata required for software configuration.
94 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
98 The DNS domain used for the hosts. This should match the dhcp_domain
99 configured in the Undercloud neutron. Defaults to localdomain.
103 Extra properties or metadata passed to Nova for the created nodes in
104 the overcloud. It's accessible via the Nova metadata API.
106 NovaComputeSchedulerHints:
108 description: Optional scheduler hints to pass to nova
110 ServiceConfigSettings:
114 type: comma_delimited_list
118 description: Command which will be run whenever configuration data changes
119 default: os-refresh-config --timeout 14400
124 type: OS::TripleO::Server
127 command: {get_param: ConfigCommand}
129 image: {get_param: NovaImage}
131 get_param: ImageUpdatePolicy
132 flavor: {get_param: OvercloudComputeFlavor}
133 key_name: {get_param: KeyName}
136 user_data_format: SOFTWARE_CONFIG
137 user_data: {get_resource: UserData}
140 template: {get_param: Hostname}
141 params: {get_param: HostnameMap}
142 software_config_transport: {get_param: SoftwareConfigTransport}
143 metadata: {get_param: ServerMetadata}
144 scheduler_hints: {get_param: NovaComputeSchedulerHints}
146 # Combine the NodeAdminUserData and NodeUserData mime archives
148 type: OS::Heat::MultipartMime
151 - config: {get_resource: NodeAdminUserData}
153 - config: {get_resource: NodeUserData}
156 # Creates the "heat-admin" user if configured via the environment
157 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
159 type: OS::TripleO::NodeAdminUserData
161 # For optional operator additional userdata
162 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
164 type: OS::TripleO::NodeUserData
167 type: OS::TripleO::Compute::Ports::ExternalPort
169 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
170 IPPool: {get_param: NovaComputeIPs}
171 NodeIndex: {get_param: NodeIndex}
174 type: OS::TripleO::Compute::Ports::InternalApiPort
176 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
177 IPPool: {get_param: NovaComputeIPs}
178 NodeIndex: {get_param: NodeIndex}
181 type: OS::TripleO::Compute::Ports::StoragePort
183 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
184 IPPool: {get_param: NovaComputeIPs}
185 NodeIndex: {get_param: NodeIndex}
188 type: OS::TripleO::Compute::Ports::StorageMgmtPort
190 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
191 IPPool: {get_param: NovaComputeIPs}
192 NodeIndex: {get_param: NodeIndex}
195 type: OS::TripleO::Compute::Ports::TenantPort
197 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
198 IPPool: {get_param: NovaComputeIPs}
199 NodeIndex: {get_param: NodeIndex}
202 type: OS::TripleO::Compute::Ports::ManagementPort
204 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
205 IPPool: {get_param: NovaComputeIPs}
206 NodeIndex: {get_param: NodeIndex}
209 type: OS::TripleO::Network::Ports::NetIpMap
211 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
212 ExternalIp: {get_attr: [ExternalPort, ip_address]}
213 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
214 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
215 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
216 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
217 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
218 StorageIp: {get_attr: [StoragePort, ip_address]}
219 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
220 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
221 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
222 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
223 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
224 TenantIp: {get_attr: [TenantPort, ip_address]}
225 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
226 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
227 ManagementIp: {get_attr: [ManagementPort, ip_address]}
228 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
229 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
232 type: OS::TripleO::Compute::Net::SoftwareConfig
234 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
235 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
236 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
237 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
238 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
239 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
240 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
243 type: OS::TripleO::SoftwareDeployment
245 name: NetworkDeployment
246 config: {get_resource: NetworkConfig}
247 server: {get_resource: NovaCompute}
248 actions: {get_param: NetworkDeploymentActions}
250 bridge_name: {get_param: NeutronPhysicalBridge}
251 interface_name: {get_param: NeutronPublicInterface}
254 type: OS::Heat::StructuredConfig
256 group: os-apply-config
261 - heat_config_%{::deploy_config_name}
262 - compute_extraconfig
267 - ceph_cluster # provided by CephClusterConfig
268 - all_nodes # provided by allNodesConfig
270 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
271 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
272 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
273 - midonet_data # Optionally provided by AllNodesExtraConfig
274 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
275 merge_behavior: deeper
279 service_names: {get_param: ServiceNames}
283 - {get_param: ServiceConfigSettings}
284 - values: {get_attr: [NetIpMap, net_ip_map]}
286 mapped_data: {get_param: NovaComputeExtraConfig}
288 mapped_data: {get_param: ExtraConfig}
291 nova_api_host: {get_input: nova_api_host}
292 nova::compute::vncproxy_host: {get_input: nova_public_ip}
293 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
294 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
296 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
298 NovaComputeDeployment:
299 type: OS::TripleO::SoftwareDeployment
300 depends_on: NetworkDeployment
302 name: NovaComputeDeployment
303 config: {get_resource: NovaComputeConfig}
304 server: {get_resource: NovaCompute}
306 nova_public_ip: {get_param: NovaPublicIP}
307 nova_api_host: {get_param: NovaApiHost}
308 nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
309 neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
310 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
312 # Resource for site-specific injection of root certificate
314 depends_on: NovaComputeDeployment
315 type: OS::TripleO::NodeTLSCAData
317 server: {get_resource: NovaCompute}
319 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
320 ComputeExtraConfigPre:
321 depends_on: NovaComputeDeployment
322 type: OS::TripleO::ComputeExtraConfigPre
324 server: {get_resource: NovaCompute}
326 # Hook for site-specific additional pre-deployment config,
327 # applying to all nodes, e.g node registration/unregistration
329 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
330 type: OS::TripleO::NodeExtraConfig
332 server: {get_resource: NovaCompute}
335 type: OS::TripleO::Tasks::PackageUpdate
338 type: OS::Heat::SoftwareDeployment
340 name: UpdateDeployment
341 config: {get_resource: UpdateConfig}
342 server: {get_resource: NovaCompute}
345 get_param: UpdateIdentifier
349 description: IP address of the server in the ctlplane network
350 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
352 description: IP address of the server in the external network
353 value: {get_attr: [ExternalPort, ip_address]}
354 internal_api_ip_address:
355 description: IP address of the server in the internal_api network
356 value: {get_attr: [InternalApiPort, ip_address]}
358 description: IP address of the server in the storage network
359 value: {get_attr: [StoragePort, ip_address]}
360 storage_mgmt_ip_address:
361 description: IP address of the server in the storage_mgmt network
362 value: {get_attr: [StorageMgmtPort, ip_address]}
364 description: IP address of the server in the tenant network
365 value: {get_attr: [TenantPort, ip_address]}
366 management_ip_address:
367 description: IP address of the server in the management network
368 value: {get_attr: [ManagementPort, ip_address]}
370 description: Hostname of the server
371 value: {get_attr: [NovaCompute, name]}
374 Server's IP address and hostname in the /etc/hosts format
378 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
379 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
380 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
381 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
382 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
383 TENANTIP TENANTHOST.DOMAIN TENANTHOST
384 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
386 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
387 DOMAIN: {get_param: CloudDomain}
388 PRIMARYHOST: {get_attr: [NovaCompute, name]}
389 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
393 - - {get_attr: [NovaCompute, name]}
395 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
399 - - {get_attr: [NovaCompute, name]}
401 STORAGEIP: {get_attr: [StoragePort, ip_address]}
405 - - {get_attr: [NovaCompute, name]}
407 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
411 - - {get_attr: [NovaCompute, name]}
413 TENANTIP: {get_attr: [TenantPort, ip_address]}
417 - - {get_attr: [NovaCompute, name]}
419 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
423 - - {get_attr: [NovaCompute, name]}
425 nova_server_resource:
426 description: Heat resource handle for the Nova compute server
428 {get_resource: NovaCompute}