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.
109 ControllerServerMetadata:
112 Extra properties or metadata passed to Nova for the created nodes in
113 the overcloud. It's accessible via the Nova metadata API. This option is
114 role-specific and is merged with the values given to the ServerMetadata
120 Extra properties or metadata passed to Nova for the created nodes in
121 the overcloud. It's accessible via the Nova metadata API. This applies to
122 all roles and is merged with a role-specific metadata parameter.
124 ControllerSchedulerHints:
126 description: Optional scheduler hints to pass to nova
128 ServiceConfigSettings:
132 type: comma_delimited_list
134 MonitoringSubscriptions:
135 type: comma_delimited_list
139 description: Command which will be run whenever configuration data changes
140 default: os-refresh-config --timeout 14400
144 description: Do not use deprecated params, they will be removed.
146 - controllerExtraConfig
151 type: OS::TripleO::Server
154 command: {get_param: ConfigCommand}
156 image: {get_param: controllerImage}
157 image_update_policy: {get_param: ImageUpdatePolicy}
158 flavor: {get_param: OvercloudControlFlavor}
159 key_name: {get_param: KeyName}
162 user_data_format: SOFTWARE_CONFIG
163 user_data: {get_resource: UserData}
166 template: {get_param: Hostname}
167 params: {get_param: HostnameMap}
168 software_config_transport: {get_param: SoftwareConfigTransport}
171 - {get_param: ServerMetadata}
172 - {get_param: ControllerServerMetadata}
173 scheduler_hints: {get_param: ControllerSchedulerHints}
175 # Combine the NodeAdminUserData and NodeUserData mime archives
177 type: OS::Heat::MultipartMime
180 - config: {get_resource: NodeAdminUserData}
182 - config: {get_resource: NodeUserData}
184 - config: {get_resource: RoleUserData}
187 # Creates the "heat-admin" user if configured via the environment
188 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
190 type: OS::TripleO::NodeAdminUserData
192 # For optional operator additional userdata
193 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
195 type: OS::TripleO::NodeUserData
197 # For optional operator role-specific userdata
198 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
200 type: OS::TripleO::Controller::NodeUserData
203 type: OS::TripleO::Controller::Ports::ExternalPort
205 IPPool: {get_param: ControllerIPs}
206 NodeIndex: {get_param: NodeIndex}
207 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
210 type: OS::TripleO::Controller::Ports::InternalApiPort
212 IPPool: {get_param: ControllerIPs}
213 NodeIndex: {get_param: NodeIndex}
214 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
217 type: OS::TripleO::Controller::Ports::StoragePort
219 IPPool: {get_param: ControllerIPs}
220 NodeIndex: {get_param: NodeIndex}
221 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
224 type: OS::TripleO::Controller::Ports::StorageMgmtPort
226 IPPool: {get_param: ControllerIPs}
227 NodeIndex: {get_param: NodeIndex}
228 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
231 type: OS::TripleO::Controller::Ports::TenantPort
233 IPPool: {get_param: ControllerIPs}
234 NodeIndex: {get_param: NodeIndex}
235 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
238 type: OS::TripleO::Controller::Ports::ManagementPort
240 IPPool: {get_param: ControllerIPs}
241 NodeIndex: {get_param: NodeIndex}
242 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
245 type: OS::TripleO::Network::Ports::NetIpMap
247 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
248 ExternalIp: {get_attr: [ExternalPort, ip_address]}
249 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
250 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
251 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
252 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
253 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
254 StorageIp: {get_attr: [StoragePort, ip_address]}
255 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
256 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
257 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
258 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
259 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
260 TenantIp: {get_attr: [TenantPort, ip_address]}
261 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
262 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
263 ManagementIp: {get_attr: [ManagementPort, ip_address]}
264 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
265 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
268 type: OS::Heat::Value
276 - - {get_attr: [Controller, name]}
278 - {get_param: CloudDomain}
282 - - {get_attr: [Controller, name]}
288 - - {get_attr: [Controller, name]}
290 - {get_param: CloudDomain}
294 - - {get_attr: [Controller, name]}
300 - - {get_attr: [Controller, name]}
302 - {get_param: CloudDomain}
306 - - {get_attr: [Controller, name]}
312 - - {get_attr: [Controller, name]}
314 - {get_param: CloudDomain}
318 - - {get_attr: [Controller, name]}
324 - - {get_attr: [Controller, name]}
326 - {get_param: CloudDomain}
330 - - {get_attr: [Controller, name]}
336 - - {get_attr: [Controller, name]}
338 - {get_param: CloudDomain}
342 - - {get_attr: [Controller, name]}
348 - - {get_attr: [Controller, name]}
350 - {get_param: CloudDomain}
354 - - {get_attr: [Controller, name]}
358 type: OS::TripleO::Controller::Net::SoftwareConfig
360 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
361 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
362 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
363 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
364 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
365 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
366 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
369 type: OS::TripleO::SoftwareDeployment
371 name: NetworkDeployment
372 config: {get_resource: NetworkConfig}
373 server: {get_resource: Controller}
374 actions: {get_param: NetworkDeploymentActions}
377 interface_name: {get_param: NeutronPublicInterface}
379 # Resource for site-specific injection of root certificate
381 depends_on: NetworkDeployment
382 type: OS::TripleO::NodeTLSCAData
384 server: {get_resource: Controller}
386 # Resource for site-specific passing of private keys/certificates
388 depends_on: NodeTLSCAData
389 type: OS::TripleO::NodeTLSData
391 server: {get_resource: Controller}
392 NodeIndex: {get_param: NodeIndex}
395 ControllerDeployment:
396 type: OS::TripleO::SoftwareDeployment
397 depends_on: NetworkDeployment
399 name: ControllerDeployment
400 config: {get_resource: ControllerConfig}
401 server: {get_resource: Controller}
403 bootstack_nodeid: {get_attr: [Controller, name]}
404 enable_load_balancer: {get_param: EnableLoadBalancer}
405 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
407 # Map heat metadata into hiera datafiles
409 type: OS::Heat::StructuredConfig
415 - heat_config_%{::deploy_config_name}
416 - controller_extraconfig
421 - bootstrap_node # provided by BootstrapNodeConfig
422 - all_nodes # provided by allNodesConfig
423 - vip_data # provided by allNodesConfig
425 - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
426 - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
427 - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
428 - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
429 - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
430 - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
431 - midonet_data #Optionally provided by AllNodesExtraConfig
432 - cisco_aci_data # Optionally provided by ControllerExtraConfigPre
433 merge_behavior: deeper
436 service_names: {get_param: ServiceNames}
437 sensu::subscriptions: {get_param: MonitoringSubscriptions}
440 - {get_param: ServiceConfigSettings}
441 - values: {get_attr: [NetIpMap, net_ip_map]}
442 controller_extraconfig:
444 - {get_param: controllerExtraConfig}
445 - {get_param: ControllerExtraConfig}
446 extraconfig: {get_param: ExtraConfig}
448 # data supplied directly to this deployment configuration, etc
449 bootstack_nodeid: {get_input: bootstack_nodeid}
451 enable_load_balancer: {get_input: enable_load_balancer}
454 tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
455 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
456 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
457 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
458 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
459 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
460 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
461 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
463 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
464 ControllerExtraConfigPre:
465 depends_on: ControllerDeployment
466 type: OS::TripleO::ControllerExtraConfigPre
468 server: {get_resource: Controller}
470 # Hook for site-specific additional pre-deployment config,
471 # applying to all nodes, e.g node registration/unregistration
473 depends_on: [ControllerExtraConfigPre, NodeTLSData]
474 type: OS::TripleO::NodeExtraConfig
476 server: {get_resource: Controller}
479 type: OS::TripleO::Tasks::PackageUpdate
482 type: OS::Heat::SoftwareDeployment
484 name: UpdateDeployment
485 config: {get_resource: UpdateConfig}
486 server: {get_resource: Controller}
489 get_param: UpdateIdentifier
493 description: IP address of the server in the ctlplane network
494 value: {get_attr: [Controller, networks, ctlplane, 0]}
496 description: IP address of the server in the external network
497 value: {get_attr: [ExternalPort, ip_address]}
498 internal_api_ip_address:
499 description: IP address of the server in the internal_api network
500 value: {get_attr: [InternalApiPort, ip_address]}
502 description: IP address of the server in the storage network
503 value: {get_attr: [StoragePort, ip_address]}
504 storage_mgmt_ip_address:
505 description: IP address of the server in the storage_mgmt network
506 value: {get_attr: [StorageMgmtPort, ip_address]}
508 description: IP address of the server in the tenant network
509 value: {get_attr: [TenantPort, ip_address]}
510 management_ip_address:
511 description: IP address of the server in the management network
512 value: {get_attr: [ManagementPort, ip_address]}
514 description: Hostname of the server
515 value: {get_attr: [Controller, name]}
517 description: Mapping of network names to hostnames
519 external: {get_attr: [NetHostMap, value, external, fqdn]}
520 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
521 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
522 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
523 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
524 management: {get_attr: [NetHostMap, value, management, fqdn]}
525 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
528 Server's IP address and hostname in the /etc/hosts format
532 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
533 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
534 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
535 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
536 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
537 TENANTIP TENANTHOST.DOMAIN TENANTHOST
538 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
539 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
541 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
542 DOMAIN: {get_param: CloudDomain}
543 PRIMARYHOST: {get_attr: [Controller, name]}
544 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
545 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
546 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
547 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
548 STORAGEIP: {get_attr: [StoragePort, ip_address]}
549 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
550 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
551 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
552 TENANTIP: {get_attr: [TenantPort, ip_address]}
553 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
554 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
555 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
556 CTLPLANEIP: {get_attr: [Controller, networks, ctlplane, 0]}
557 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
558 nova_server_resource:
559 description: Heat resource handle for the Nova compute server
561 {get_resource: Controller}
563 description: MD5 checksum of the TLS Key Modulus
564 value: {get_attr: [NodeTLSData, key_modulus_md5]}
565 tls_cert_modulus_md5:
566 description: MD5 checksum of the TLS Certificate Modulus
567 value: {get_attr: [NodeTLSData, cert_modulus_md5]}