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 - all_nodes # 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 merge_behavior: deeper
278 service_names: {get_param: ServiceNames}
282 - {get_param: ServiceConfigSettings}
283 - values: {get_attr: [NetIpMap, net_ip_map]}
285 mapped_data: {get_param: NovaComputeExtraConfig}
287 mapped_data: {get_param: ExtraConfig}
290 nova_api_host: {get_input: nova_api_host}
291 nova::compute::vncproxy_host: {get_input: nova_public_ip}
292 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
293 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
295 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
297 NovaComputeDeployment:
298 type: OS::TripleO::SoftwareDeployment
299 depends_on: NetworkDeployment
301 name: NovaComputeDeployment
302 config: {get_resource: NovaComputeConfig}
303 server: {get_resource: NovaCompute}
305 nova_public_ip: {get_param: NovaPublicIP}
306 nova_api_host: {get_param: NovaApiHost}
307 nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
308 neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
309 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
311 # Resource for site-specific injection of root certificate
313 depends_on: NovaComputeDeployment
314 type: OS::TripleO::NodeTLSCAData
316 server: {get_resource: NovaCompute}
318 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
319 ComputeExtraConfigPre:
320 depends_on: NovaComputeDeployment
321 type: OS::TripleO::ComputeExtraConfigPre
323 server: {get_resource: NovaCompute}
325 # Hook for site-specific additional pre-deployment config,
326 # applying to all nodes, e.g node registration/unregistration
328 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
329 type: OS::TripleO::NodeExtraConfig
331 server: {get_resource: NovaCompute}
334 type: OS::TripleO::Tasks::PackageUpdate
337 type: OS::Heat::SoftwareDeployment
339 name: UpdateDeployment
340 config: {get_resource: UpdateConfig}
341 server: {get_resource: NovaCompute}
344 get_param: UpdateIdentifier
348 description: IP address of the server in the ctlplane network
349 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
351 description: IP address of the server in the external network
352 value: {get_attr: [ExternalPort, ip_address]}
353 internal_api_ip_address:
354 description: IP address of the server in the internal_api network
355 value: {get_attr: [InternalApiPort, ip_address]}
357 description: IP address of the server in the storage network
358 value: {get_attr: [StoragePort, ip_address]}
359 storage_mgmt_ip_address:
360 description: IP address of the server in the storage_mgmt network
361 value: {get_attr: [StorageMgmtPort, ip_address]}
363 description: IP address of the server in the tenant network
364 value: {get_attr: [TenantPort, ip_address]}
365 management_ip_address:
366 description: IP address of the server in the management network
367 value: {get_attr: [ManagementPort, ip_address]}
369 description: Hostname of the server
370 value: {get_attr: [NovaCompute, name]}
373 Server's IP address and hostname in the /etc/hosts format
377 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
378 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
379 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
380 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
381 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
382 TENANTIP TENANTHOST.DOMAIN TENANTHOST
383 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
385 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
386 DOMAIN: {get_param: CloudDomain}
387 PRIMARYHOST: {get_attr: [NovaCompute, name]}
388 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
392 - - {get_attr: [NovaCompute, name]}
394 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
398 - - {get_attr: [NovaCompute, name]}
400 STORAGEIP: {get_attr: [StoragePort, ip_address]}
404 - - {get_attr: [NovaCompute, name]}
406 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
410 - - {get_attr: [NovaCompute, name]}
412 TENANTIP: {get_attr: [TenantPort, ip_address]}
416 - - {get_attr: [NovaCompute, name]}
418 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
422 - - {get_attr: [NovaCompute, name]}
424 nova_server_resource:
425 description: Heat resource handle for the Nova compute server
427 {get_resource: NovaCompute}