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]
92 The DNS domain used for the hosts. This should match the dhcp_domain
93 configured in the Undercloud neutron. Defaults to localdomain.
97 Extra properties or metadata passed to Nova for the created nodes in
98 the overcloud. It's accessible via the Nova metadata API.
100 NovaComputeSchedulerHints:
102 description: Optional scheduler hints to pass to nova
104 ServiceConfigSettings:
108 type: comma_delimited_list
110 MonitoringSubscriptions:
111 type: comma_delimited_list
115 description: Command which will be run whenever configuration data changes
116 default: os-refresh-config --timeout 14400
121 type: OS::TripleO::Server
124 command: {get_param: ConfigCommand}
126 image: {get_param: NovaImage}
128 get_param: ImageUpdatePolicy
129 flavor: {get_param: OvercloudComputeFlavor}
130 key_name: {get_param: KeyName}
133 user_data_format: SOFTWARE_CONFIG
134 user_data: {get_resource: UserData}
137 template: {get_param: Hostname}
138 params: {get_param: HostnameMap}
139 software_config_transport: {get_param: SoftwareConfigTransport}
140 metadata: {get_param: ServerMetadata}
141 scheduler_hints: {get_param: NovaComputeSchedulerHints}
143 # Combine the NodeAdminUserData and NodeUserData mime archives
145 type: OS::Heat::MultipartMime
148 - config: {get_resource: NodeAdminUserData}
150 - config: {get_resource: NodeUserData}
153 # Creates the "heat-admin" user if configured via the environment
154 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
156 type: OS::TripleO::NodeAdminUserData
158 # For optional operator additional userdata
159 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
161 type: OS::TripleO::NodeUserData
164 type: OS::TripleO::Compute::Ports::ExternalPort
166 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
167 IPPool: {get_param: NovaComputeIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::Compute::Ports::InternalApiPort
173 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
174 IPPool: {get_param: NovaComputeIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::Compute::Ports::StoragePort
180 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
181 IPPool: {get_param: NovaComputeIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::Compute::Ports::StorageMgmtPort
187 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
188 IPPool: {get_param: NovaComputeIPs}
189 NodeIndex: {get_param: NodeIndex}
192 type: OS::TripleO::Compute::Ports::TenantPort
194 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
195 IPPool: {get_param: NovaComputeIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::Compute::Ports::ManagementPort
201 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
202 IPPool: {get_param: NovaComputeIPs}
203 NodeIndex: {get_param: NodeIndex}
206 type: OS::TripleO::Network::Ports::NetIpMap
208 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
209 ExternalIp: {get_attr: [ExternalPort, ip_address]}
210 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
211 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
212 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
213 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
214 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
215 StorageIp: {get_attr: [StoragePort, ip_address]}
216 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
217 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
218 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
219 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
220 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
221 TenantIp: {get_attr: [TenantPort, ip_address]}
222 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
223 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
224 ManagementIp: {get_attr: [ManagementPort, ip_address]}
225 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
226 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
229 type: OS::TripleO::Compute::Net::SoftwareConfig
231 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
232 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
233 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
234 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
235 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
236 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
237 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
240 type: OS::TripleO::SoftwareDeployment
242 name: NetworkDeployment
243 config: {get_resource: NetworkConfig}
244 server: {get_resource: NovaCompute}
245 actions: {get_param: NetworkDeploymentActions}
247 bridge_name: {get_param: NeutronPhysicalBridge}
248 interface_name: {get_param: NeutronPublicInterface}
251 type: OS::Heat::StructuredConfig
253 group: os-apply-config
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
278 service_names: {get_param: ServiceNames}
279 sensu::subscriptions: {get_param: MonitoringSubscriptions}
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 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
293 NovaComputeDeployment:
294 type: OS::TripleO::SoftwareDeployment
295 depends_on: NetworkDeployment
297 name: NovaComputeDeployment
298 config: {get_resource: NovaComputeConfig}
299 server: {get_resource: NovaCompute}
301 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
303 # Resource for site-specific injection of root certificate
305 depends_on: NovaComputeDeployment
306 type: OS::TripleO::NodeTLSCAData
308 server: {get_resource: NovaCompute}
310 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
311 ComputeExtraConfigPre:
312 depends_on: NovaComputeDeployment
313 type: OS::TripleO::ComputeExtraConfigPre
315 server: {get_resource: NovaCompute}
317 # Hook for site-specific additional pre-deployment config,
318 # applying to all nodes, e.g node registration/unregistration
320 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
321 type: OS::TripleO::NodeExtraConfig
323 server: {get_resource: NovaCompute}
326 type: OS::TripleO::Tasks::PackageUpdate
329 type: OS::Heat::SoftwareDeployment
331 name: UpdateDeployment
332 config: {get_resource: UpdateConfig}
333 server: {get_resource: NovaCompute}
336 get_param: UpdateIdentifier
340 description: IP address of the server in the ctlplane network
341 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
343 description: IP address of the server in the external network
344 value: {get_attr: [ExternalPort, ip_address]}
345 internal_api_ip_address:
346 description: IP address of the server in the internal_api network
347 value: {get_attr: [InternalApiPort, ip_address]}
349 description: IP address of the server in the storage network
350 value: {get_attr: [StoragePort, ip_address]}
351 storage_mgmt_ip_address:
352 description: IP address of the server in the storage_mgmt network
353 value: {get_attr: [StorageMgmtPort, ip_address]}
355 description: IP address of the server in the tenant network
356 value: {get_attr: [TenantPort, ip_address]}
357 management_ip_address:
358 description: IP address of the server in the management network
359 value: {get_attr: [ManagementPort, ip_address]}
361 description: Hostname of the server
362 value: {get_attr: [NovaCompute, name]}
365 Server's IP address and hostname in the /etc/hosts format
369 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
370 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
371 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
372 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
373 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
374 TENANTIP TENANTHOST.DOMAIN TENANTHOST
375 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
376 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
378 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
379 DOMAIN: {get_param: CloudDomain}
380 PRIMARYHOST: {get_attr: [NovaCompute, name]}
381 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
385 - - {get_attr: [NovaCompute, name]}
387 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
391 - - {get_attr: [NovaCompute, name]}
393 STORAGEIP: {get_attr: [StoragePort, ip_address]}
397 - - {get_attr: [NovaCompute, name]}
399 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
403 - - {get_attr: [NovaCompute, name]}
405 TENANTIP: {get_attr: [TenantPort, ip_address]}
409 - - {get_attr: [NovaCompute, name]}
411 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
415 - - {get_attr: [NovaCompute, name]}
417 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
421 - - {get_attr: [NovaCompute, name]}
423 nova_server_resource:
424 description: Heat resource handle for the Nova compute server
426 {get_resource: NovaCompute}