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
306 - heat_config_%{::deploy_config_name}
307 - controller_extraconfig
312 - bootstrap_node # provided by BootstrapNodeConfig
313 - all_nodes # provided by allNodesConfig
314 - vip_data # provided by allNodesConfig
316 - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
317 - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
318 - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
319 - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
320 - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
321 - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
322 - midonet_data #Optionally provided by AllNodesExtraConfig
323 - cisco_aci_data # Optionally provided by ControllerExtraConfigPre
324 merge_behavior: deeper
327 service_names: {get_param: ServiceNames}
328 sensu::subscriptions: {get_param: MonitoringSubscriptions}
331 - {get_param: ServiceConfigSettings}
332 - values: {get_attr: [NetIpMap, net_ip_map]}
333 controller_extraconfig:
335 - {get_param: controllerExtraConfig}
336 - {get_param: ControllerExtraConfig}
337 extraconfig: {get_param: ExtraConfig}
339 # data supplied directly to this deployment configuration, etc
340 bootstack_nodeid: {get_input: bootstack_nodeid}
342 enable_load_balancer: {get_input: enable_load_balancer}
345 tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
346 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
348 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
349 ControllerExtraConfigPre:
350 depends_on: ControllerDeployment
351 type: OS::TripleO::ControllerExtraConfigPre
353 server: {get_resource: Controller}
355 # Hook for site-specific additional pre-deployment config,
356 # applying to all nodes, e.g node registration/unregistration
358 depends_on: [ControllerExtraConfigPre, NodeTLSData]
359 type: OS::TripleO::NodeExtraConfig
361 server: {get_resource: Controller}
364 type: OS::TripleO::Tasks::PackageUpdate
367 type: OS::Heat::SoftwareDeployment
369 name: UpdateDeployment
370 config: {get_resource: UpdateConfig}
371 server: {get_resource: Controller}
374 get_param: UpdateIdentifier
378 description: IP address of the server in the ctlplane network
379 value: {get_attr: [Controller, networks, ctlplane, 0]}
381 description: IP address of the server in the external network
382 value: {get_attr: [ExternalPort, ip_address]}
383 internal_api_ip_address:
384 description: IP address of the server in the internal_api network
385 value: {get_attr: [InternalApiPort, ip_address]}
387 description: IP address of the server in the storage network
388 value: {get_attr: [StoragePort, ip_address]}
389 storage_mgmt_ip_address:
390 description: IP address of the server in the storage_mgmt network
391 value: {get_attr: [StorageMgmtPort, ip_address]}
393 description: IP address of the server in the tenant network
394 value: {get_attr: [TenantPort, ip_address]}
395 management_ip_address:
396 description: IP address of the server in the management network
397 value: {get_attr: [ManagementPort, ip_address]}
399 description: Hostname of the server
400 value: {get_attr: [Controller, name]}
402 description: Mapping of network names to hostnames
407 - - {get_attr: [Controller, name]}
409 - {get_param: CloudDomain}
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}
448 Server's IP address and hostname in the /etc/hosts format
452 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
453 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
454 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
455 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
456 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
457 TENANTIP TENANTHOST.DOMAIN TENANTHOST
458 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
459 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
461 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
462 DOMAIN: {get_param: CloudDomain}
463 PRIMARYHOST: {get_attr: [Controller, name]}
464 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
468 - - {get_attr: [Controller, name]}
470 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
474 - - {get_attr: [Controller, name]}
476 STORAGEIP: {get_attr: [StoragePort, ip_address]}
480 - - {get_attr: [Controller, name]}
482 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
486 - - {get_attr: [Controller, name]}
488 TENANTIP: {get_attr: [TenantPort, ip_address]}
492 - - {get_attr: [Controller, name]}
494 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
498 - - {get_attr: [Controller, name]}
500 CTLPLANEIP: {get_attr: [Controller, networks, ctlplane, 0]}
504 - - {get_attr: [Controller, name]}
506 nova_server_resource:
507 description: Heat resource handle for the Nova compute server
509 {get_resource: Controller}
511 description: MD5 checksum of the TLS Key Modulus
512 value: {get_attr: [NodeTLSData, key_modulus_md5]}
513 tls_cert_modulus_md5:
514 description: MD5 checksum of the TLS Certificate Modulus
515 value: {get_attr: [NodeTLSData, cert_modulus_md5]}