1 heat_template_version: 2016-10-14
4 OpenStack controller node configured by Puppet.
10 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
12 ControllerExtraConfig:
15 Controller specific hiera configuration data to inject into the cluster.
20 A network mapped list of IPs to assign to Controllers in the following form:
22 "internal_api": ["a.b.c.d", "e.f.g.h"],
28 description: Set to True to enable debugging on all services.
32 description: Whether to deploy a LoadBalancer on the Controller
37 Additional hieradata to inject into the cluster, note that
38 ControllerExtraConfig takes precedence over ExtraConfig.
40 OvercloudControlFlavor:
41 description: Flavor for control nodes to request when deploying.
45 - custom_constraint: nova.flavor
48 default: overcloud-full
50 - custom_constraint: glance.image
52 default: 'REBUILD_PRESERVE_EPHEMERAL'
53 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
57 description: Name of an existing Nova key pair to enable SSH access to the instances
60 - custom_constraint: nova.keypair
61 NeutronPublicInterface:
63 description: What interface to bridge onto br-ex for network nodes.
67 description: Mapping of service_name -> network name. Typically set
68 via parameter_defaults in the resource registry.
72 description: Mapping of service endpoint -> protocol. Typically set
73 via parameter_defaults in the resource registry.
79 Setting to a previously unused value during stack-update will trigger
80 package update on all nodes
83 default: '' # Defaults to Heat created hostname
87 description: Optional mapping to override hostnames
88 NetworkDeploymentActions:
89 type: comma_delimited_list
91 Heat action when to apply network configuration changes
96 SoftwareConfigTransport:
97 default: POLL_SERVER_CFN
99 How the server should receive the metadata required for software configuration.
102 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
104 default: 'localdomain'
107 The DNS domain used for the hosts. This should match the dhcp_domain
108 configured in the Undercloud neutron. Defaults to localdomain.
112 Extra properties or metadata passed to Nova for the created nodes in
113 the overcloud. It's accessible via the Nova metadata API.
115 ControllerSchedulerHints:
117 description: Optional scheduler hints to pass to nova
119 ServiceConfigSettings:
123 type: comma_delimited_list
125 MonitoringSubscriptions:
126 type: comma_delimited_list
130 description: Command which will be run whenever configuration data changes
131 default: os-refresh-config --timeout 14400
135 description: Do not use deprecated params, they will be removed.
137 - controllerExtraConfig
142 type: OS::TripleO::Server
145 command: {get_param: ConfigCommand}
147 image: {get_param: controllerImage}
148 image_update_policy: {get_param: ImageUpdatePolicy}
149 flavor: {get_param: OvercloudControlFlavor}
150 key_name: {get_param: KeyName}
153 user_data_format: SOFTWARE_CONFIG
154 user_data: {get_resource: UserData}
157 template: {get_param: Hostname}
158 params: {get_param: HostnameMap}
159 software_config_transport: {get_param: SoftwareConfigTransport}
160 metadata: {get_param: ServerMetadata}
161 scheduler_hints: {get_param: ControllerSchedulerHints}
163 # Combine the NodeAdminUserData and NodeUserData mime archives
165 type: OS::Heat::MultipartMime
168 - config: {get_resource: NodeAdminUserData}
170 - config: {get_resource: NodeUserData}
173 # Creates the "heat-admin" user if configured via the environment
174 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
176 type: OS::TripleO::NodeAdminUserData
178 # For optional operator additional userdata
179 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
181 type: OS::TripleO::NodeUserData
184 type: OS::TripleO::Controller::Ports::ExternalPort
186 IPPool: {get_param: ControllerIPs}
187 NodeIndex: {get_param: NodeIndex}
188 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
191 type: OS::TripleO::Controller::Ports::InternalApiPort
193 IPPool: {get_param: ControllerIPs}
194 NodeIndex: {get_param: NodeIndex}
195 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
198 type: OS::TripleO::Controller::Ports::StoragePort
200 IPPool: {get_param: ControllerIPs}
201 NodeIndex: {get_param: NodeIndex}
202 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
205 type: OS::TripleO::Controller::Ports::StorageMgmtPort
207 IPPool: {get_param: ControllerIPs}
208 NodeIndex: {get_param: NodeIndex}
209 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
212 type: OS::TripleO::Controller::Ports::TenantPort
214 IPPool: {get_param: ControllerIPs}
215 NodeIndex: {get_param: NodeIndex}
216 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
219 type: OS::TripleO::Controller::Ports::ManagementPort
221 IPPool: {get_param: ControllerIPs}
222 NodeIndex: {get_param: NodeIndex}
223 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
226 type: OS::TripleO::Network::Ports::NetIpMap
228 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
229 ExternalIp: {get_attr: [ExternalPort, ip_address]}
230 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
231 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
232 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
233 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
234 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
235 StorageIp: {get_attr: [StoragePort, ip_address]}
236 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
237 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
238 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
239 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
240 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
241 TenantIp: {get_attr: [TenantPort, ip_address]}
242 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
243 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
244 ManagementIp: {get_attr: [ManagementPort, ip_address]}
245 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
246 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
249 type: OS::TripleO::Controller::Net::SoftwareConfig
251 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
252 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
253 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
254 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
255 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
256 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
257 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
260 type: OS::TripleO::SoftwareDeployment
262 name: NetworkDeployment
263 config: {get_resource: NetworkConfig}
264 server: {get_resource: Controller}
265 actions: {get_param: NetworkDeploymentActions}
268 interface_name: {get_param: NeutronPublicInterface}
270 # Resource for site-specific injection of root certificate
272 depends_on: NetworkDeployment
273 type: OS::TripleO::NodeTLSCAData
275 server: {get_resource: Controller}
277 # Resource for site-specific passing of private keys/certificates
279 depends_on: NodeTLSCAData
280 type: OS::TripleO::NodeTLSData
282 server: {get_resource: Controller}
283 NodeIndex: {get_param: NodeIndex}
286 ControllerDeployment:
287 type: OS::TripleO::SoftwareDeployment
288 depends_on: NetworkDeployment
290 name: ControllerDeployment
291 config: {get_resource: ControllerConfig}
292 server: {get_resource: Controller}
294 bootstack_nodeid: {get_attr: [Controller, name]}
295 enable_load_balancer: {get_param: EnableLoadBalancer}
296 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
298 # Map heat metadata into hiera datafiles
300 type: OS::Heat::StructuredConfig
302 group: os-apply-config
307 - heat_config_%{::deploy_config_name}
308 - controller_extraconfig
313 - bootstrap_node # provided by BootstrapNodeConfig
314 - all_nodes # provided by allNodesConfig
315 - vip_data # provided by allNodesConfig
317 - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
318 - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
319 - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
320 - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
321 - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
322 - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
323 - midonet_data #Optionally provided by AllNodesExtraConfig
324 - cisco_aci_data # Optionally provided by ControllerExtraConfigPre
325 merge_behavior: deeper
329 service_names: {get_param: ServiceNames}
330 sensu::subscriptions: {get_param: MonitoringSubscriptions}
334 - {get_param: ServiceConfigSettings}
335 - values: {get_attr: [NetIpMap, net_ip_map]}
336 controller_extraconfig:
339 - {get_param: controllerExtraConfig}
340 - {get_param: ControllerExtraConfig}
342 mapped_data: {get_param: ExtraConfig}
344 mapped_data: # data supplied directly to this deployment configuration, etc
345 bootstack_nodeid: {get_input: bootstack_nodeid}
348 enable_load_balancer: {get_input: enable_load_balancer}
351 tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
352 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
354 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
355 ControllerExtraConfigPre:
356 depends_on: ControllerDeployment
357 type: OS::TripleO::ControllerExtraConfigPre
359 server: {get_resource: Controller}
361 # Hook for site-specific additional pre-deployment config,
362 # applying to all nodes, e.g node registration/unregistration
364 depends_on: [ControllerExtraConfigPre, NodeTLSData]
365 type: OS::TripleO::NodeExtraConfig
367 server: {get_resource: Controller}
370 type: OS::TripleO::Tasks::PackageUpdate
373 type: OS::Heat::SoftwareDeployment
375 name: UpdateDeployment
376 config: {get_resource: UpdateConfig}
377 server: {get_resource: Controller}
380 get_param: UpdateIdentifier
384 description: IP address of the server in the ctlplane network
385 value: {get_attr: [Controller, networks, ctlplane, 0]}
387 description: IP address of the server in the external network
388 value: {get_attr: [ExternalPort, ip_address]}
389 internal_api_ip_address:
390 description: IP address of the server in the internal_api network
391 value: {get_attr: [InternalApiPort, ip_address]}
393 description: IP address of the server in the storage network
394 value: {get_attr: [StoragePort, ip_address]}
395 storage_mgmt_ip_address:
396 description: IP address of the server in the storage_mgmt network
397 value: {get_attr: [StorageMgmtPort, ip_address]}
399 description: IP address of the server in the tenant network
400 value: {get_attr: [TenantPort, ip_address]}
401 management_ip_address:
402 description: IP address of the server in the management network
403 value: {get_attr: [ManagementPort, ip_address]}
405 description: Hostname of the server
406 value: {get_attr: [Controller, name]}
408 description: Mapping of network names to hostnames
413 - - {get_attr: [Controller, name]}
415 - {get_param: CloudDomain}
419 - - {get_attr: [Controller, name]}
421 - {get_param: CloudDomain}
425 - - {get_attr: [Controller, name]}
427 - {get_param: CloudDomain}
431 - - {get_attr: [Controller, name]}
433 - {get_param: CloudDomain}
437 - - {get_attr: [Controller, name]}
439 - {get_param: CloudDomain}
443 - - {get_attr: [Controller, name]}
445 - {get_param: CloudDomain}
449 - - {get_attr: [Controller, name]}
451 - {get_param: CloudDomain}
454 Server's IP address and hostname in the /etc/hosts format
458 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
459 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
460 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
461 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
462 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
463 TENANTIP TENANTHOST.DOMAIN TENANTHOST
464 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
465 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
467 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
468 DOMAIN: {get_param: CloudDomain}
469 PRIMARYHOST: {get_attr: [Controller, name]}
470 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
474 - - {get_attr: [Controller, name]}
476 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
480 - - {get_attr: [Controller, name]}
482 STORAGEIP: {get_attr: [StoragePort, ip_address]}
486 - - {get_attr: [Controller, name]}
488 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
492 - - {get_attr: [Controller, name]}
494 TENANTIP: {get_attr: [TenantPort, ip_address]}
498 - - {get_attr: [Controller, name]}
500 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
504 - - {get_attr: [Controller, name]}
506 CTLPLANEIP: {get_attr: [Controller, networks, ctlplane, 0]}
510 - - {get_attr: [Controller, name]}
512 nova_server_resource:
513 description: Heat resource handle for the Nova compute server
515 {get_resource: Controller}
517 description: MD5 checksum of the TLS Key Modulus
518 value: {get_attr: [NodeTLSData, key_modulus_md5]}
519 tls_cert_modulus_md5:
520 description: MD5 checksum of the TLS Certificate Modulus
521 value: {get_attr: [NodeTLSData, cert_modulus_md5]}