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: comma_delimited_list
127 type: OS::TripleO::Server
130 command: {get_param: ConfigCommand}
132 image: {get_param: NovaImage}
134 get_param: ImageUpdatePolicy
135 flavor: {get_param: OvercloudComputeFlavor}
136 key_name: {get_param: KeyName}
139 user_data_format: SOFTWARE_CONFIG
140 user_data: {get_resource: UserData}
143 template: {get_param: Hostname}
144 params: {get_param: HostnameMap}
145 software_config_transport: {get_param: SoftwareConfigTransport}
146 metadata: {get_param: ServerMetadata}
147 scheduler_hints: {get_param: NovaComputeSchedulerHints}
149 # Combine the NodeAdminUserData and NodeUserData mime archives
151 type: OS::Heat::MultipartMime
154 - config: {get_resource: NodeAdminUserData}
156 - config: {get_resource: NodeUserData}
159 # Creates the "heat-admin" user if configured via the environment
160 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
162 type: OS::TripleO::NodeAdminUserData
164 # For optional operator additional userdata
165 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
167 type: OS::TripleO::NodeUserData
170 type: OS::TripleO::Compute::Ports::ExternalPort
172 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
173 IPPool: {get_param: NovaComputeIPs}
174 NodeIndex: {get_param: NodeIndex}
177 type: OS::TripleO::Compute::Ports::InternalApiPort
179 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
180 IPPool: {get_param: NovaComputeIPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::Compute::Ports::StoragePort
186 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
187 IPPool: {get_param: NovaComputeIPs}
188 NodeIndex: {get_param: NodeIndex}
191 type: OS::TripleO::Compute::Ports::StorageMgmtPort
193 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
194 IPPool: {get_param: NovaComputeIPs}
195 NodeIndex: {get_param: NodeIndex}
198 type: OS::TripleO::Compute::Ports::TenantPort
200 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
201 IPPool: {get_param: NovaComputeIPs}
202 NodeIndex: {get_param: NodeIndex}
205 type: OS::TripleO::Compute::Ports::ManagementPort
207 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
208 IPPool: {get_param: NovaComputeIPs}
209 NodeIndex: {get_param: NodeIndex}
212 type: OS::TripleO::Network::Ports::NetIpMap
214 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
215 ExternalIp: {get_attr: [ExternalPort, ip_address]}
216 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
217 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
218 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
219 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
220 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
221 StorageIp: {get_attr: [StoragePort, ip_address]}
222 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
223 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
224 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
225 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
226 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
227 TenantIp: {get_attr: [TenantPort, ip_address]}
228 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
229 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
230 ManagementIp: {get_attr: [ManagementPort, ip_address]}
231 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
232 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
235 type: OS::TripleO::Compute::Net::SoftwareConfig
237 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
238 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
239 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
240 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
241 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
242 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
243 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
246 type: OS::TripleO::SoftwareDeployment
248 name: NetworkDeployment
249 config: {get_resource: NetworkConfig}
250 server: {get_resource: NovaCompute}
251 actions: {get_param: NetworkDeploymentActions}
253 bridge_name: {get_param: NeutronPhysicalBridge}
254 interface_name: {get_param: NeutronPublicInterface}
257 type: OS::Heat::StructuredConfig
259 group: os-apply-config
264 - heat_config_%{::deploy_config_name}
265 - compute_extraconfig
270 - bootstrap_node # provided by allNodesConfig
271 - all_nodes # provided by allNodesConfig
272 - vip_data # provided by allNodesConfig
274 - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
275 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
276 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
277 - midonet_data # Optionally provided by AllNodesExtraConfig
278 - neutron_opencontrail_data # Optionally provided by ComputeExtraConfigPre
279 - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
280 merge_behavior: deeper
284 service_names: {get_param: ServiceNames}
285 sensu::subscriptions: {get_param: MonitoringSubscriptions}
289 - {get_param: ServiceConfigSettings}
290 - values: {get_attr: [NetIpMap, net_ip_map]}
292 mapped_data: {get_param: NovaComputeExtraConfig}
294 mapped_data: {get_param: ExtraConfig}
297 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
298 tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
299 tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
301 NovaComputeDeployment:
302 type: OS::TripleO::SoftwareDeployment
303 depends_on: NetworkDeployment
305 name: NovaComputeDeployment
306 config: {get_resource: NovaComputeConfig}
307 server: {get_resource: NovaCompute}
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
384 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
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 CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
429 - - {get_attr: [NovaCompute, name]}
431 nova_server_resource:
432 description: Heat resource handle for the Nova compute server
434 {get_resource: NovaCompute}