1 heat_template_version: ocata
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
137 ServiceMetadataSettings:
142 description: Command which will be run whenever configuration data changes
143 default: os-refresh-config --timeout 14400
147 Command or script snippet to run on all overcloud nodes to
148 initialize the upgrade process. E.g. a repository switch.
153 description: Do not use deprecated params, they will be removed.
155 - controllerExtraConfig
160 type: OS::TripleO::Server
163 command: {get_param: ConfigCommand}
165 image: {get_param: controllerImage}
166 image_update_policy: {get_param: ImageUpdatePolicy}
167 flavor: {get_param: OvercloudControlFlavor}
168 key_name: {get_param: KeyName}
171 user_data_format: SOFTWARE_CONFIG
172 user_data: {get_resource: UserData}
175 template: {get_param: Hostname}
176 params: {get_param: HostnameMap}
177 software_config_transport: {get_param: SoftwareConfigTransport}
180 - {get_param: ServerMetadata}
181 - {get_param: ControllerServerMetadata}
182 - {get_param: ServiceMetadataSettings}
183 scheduler_hints: {get_param: ControllerSchedulerHints}
185 # Combine the NodeAdminUserData and NodeUserData mime archives
187 type: OS::Heat::MultipartMime
190 - config: {get_resource: NodeAdminUserData}
192 - config: {get_resource: NodeUserData}
194 - config: {get_resource: RoleUserData}
197 # Creates the "heat-admin" user if configured via the environment
198 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
200 type: OS::TripleO::NodeAdminUserData
202 # For optional operator additional userdata
203 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
205 type: OS::TripleO::NodeUserData
207 # For optional operator role-specific userdata
208 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
210 type: OS::TripleO::Controller::NodeUserData
213 type: OS::TripleO::Controller::Ports::ExternalPort
215 IPPool: {get_param: ControllerIPs}
216 NodeIndex: {get_param: NodeIndex}
217 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
220 type: OS::TripleO::Controller::Ports::InternalApiPort
222 IPPool: {get_param: ControllerIPs}
223 NodeIndex: {get_param: NodeIndex}
224 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
227 type: OS::TripleO::Controller::Ports::StoragePort
229 IPPool: {get_param: ControllerIPs}
230 NodeIndex: {get_param: NodeIndex}
231 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
234 type: OS::TripleO::Controller::Ports::StorageMgmtPort
236 IPPool: {get_param: ControllerIPs}
237 NodeIndex: {get_param: NodeIndex}
238 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
241 type: OS::TripleO::Controller::Ports::TenantPort
243 IPPool: {get_param: ControllerIPs}
244 NodeIndex: {get_param: NodeIndex}
245 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
248 type: OS::TripleO::Controller::Ports::ManagementPort
250 IPPool: {get_param: ControllerIPs}
251 NodeIndex: {get_param: NodeIndex}
252 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
255 type: OS::TripleO::Network::Ports::NetIpMap
257 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
258 ExternalIp: {get_attr: [ExternalPort, ip_address]}
259 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
260 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
261 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
262 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
263 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
264 StorageIp: {get_attr: [StoragePort, ip_address]}
265 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
266 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
267 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
268 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
269 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
270 TenantIp: {get_attr: [TenantPort, ip_address]}
271 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
272 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
273 ManagementIp: {get_attr: [ManagementPort, ip_address]}
274 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
275 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
278 type: OS::Heat::Value
286 - - {get_attr: [Controller, name]}
288 - {get_param: CloudDomain}
292 - - {get_attr: [Controller, name]}
298 - - {get_attr: [Controller, name]}
300 - {get_param: CloudDomain}
304 - - {get_attr: [Controller, name]}
310 - - {get_attr: [Controller, name]}
312 - {get_param: CloudDomain}
316 - - {get_attr: [Controller, name]}
322 - - {get_attr: [Controller, name]}
324 - {get_param: CloudDomain}
328 - - {get_attr: [Controller, name]}
334 - - {get_attr: [Controller, name]}
336 - {get_param: CloudDomain}
340 - - {get_attr: [Controller, name]}
346 - - {get_attr: [Controller, name]}
348 - {get_param: CloudDomain}
352 - - {get_attr: [Controller, name]}
358 - - {get_attr: [Controller, name]}
360 - {get_param: CloudDomain}
364 - - {get_attr: [Controller, name]}
368 type: OS::TripleO::Controller::PreNetworkConfig
370 server: {get_resource: Controller}
373 type: OS::TripleO::Controller::Net::SoftwareConfig
375 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
376 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
377 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
378 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
379 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
380 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
381 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
384 type: OS::TripleO::SoftwareDeployment
385 depends_on: PreNetworkConfig
387 name: NetworkDeployment
388 config: {get_resource: NetworkConfig}
389 server: {get_resource: Controller}
390 actions: {get_param: NetworkDeploymentActions}
393 interface_name: {get_param: NeutronPublicInterface}
395 # Resource for site-specific injection of root certificate
397 depends_on: NetworkDeployment
398 type: OS::TripleO::NodeTLSCAData
400 server: {get_resource: Controller}
402 # Resource for site-specific passing of private keys/certificates
404 depends_on: NodeTLSCAData
405 type: OS::TripleO::NodeTLSData
407 server: {get_resource: Controller}
408 NodeIndex: {get_param: NodeIndex}
410 ControllerUpgradeInitConfig:
411 type: OS::Heat::SoftwareConfig
417 - - "#!/bin/bash\n\n"
418 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
419 - get_param: UpgradeInitCommand
421 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
422 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
423 ControllerUpgradeInitDeployment:
424 type: OS::Heat::SoftwareDeployment
425 depends_on: NetworkDeployment
427 name: ControllerUpgradeInitDeployment
428 server: {get_resource: Controller}
429 config: {get_resource: ControllerUpgradeInitConfig}
431 ControllerDeployment:
432 type: OS::TripleO::SoftwareDeployment
433 depends_on: ControllerUpgradeInitDeployment
435 name: ControllerDeployment
436 config: {get_resource: ControllerConfig}
437 server: {get_resource: Controller}
439 bootstack_nodeid: {get_attr: [Controller, name]}
440 enable_load_balancer: {get_param: EnableLoadBalancer}
441 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
443 # Map heat metadata into hiera datafiles
445 type: OS::Heat::StructuredConfig
451 - heat_config_%{::deploy_config_name}
452 - controller_extraconfig
457 - bootstrap_node # provided by BootstrapNodeConfig
458 - all_nodes # provided by allNodesConfig
459 - vip_data # provided by allNodesConfig
461 - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
462 - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
463 - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
464 - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
465 - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
466 - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
467 - midonet_data #Optionally provided by AllNodesExtraConfig
468 - cisco_aci_data # Optionally provided by ControllerExtraConfigPre
469 merge_behavior: deeper
472 service_names: {get_param: ServiceNames}
473 sensu::subscriptions: {get_param: MonitoringSubscriptions}
476 - {get_param: ServiceConfigSettings}
477 - values: {get_attr: [NetIpMap, net_ip_map]}
478 controller_extraconfig:
480 - {get_param: controllerExtraConfig}
481 - {get_param: ControllerExtraConfig}
482 extraconfig: {get_param: ExtraConfig}
484 # data supplied directly to this deployment configuration, etc
485 bootstack_nodeid: {get_input: bootstack_nodeid}
487 enable_load_balancer: {get_input: enable_load_balancer}
490 tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
491 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
492 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
493 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
494 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
495 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
496 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
497 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
499 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
500 ControllerExtraConfigPre:
501 depends_on: ControllerDeployment
502 type: OS::TripleO::ControllerExtraConfigPre
504 server: {get_resource: Controller}
506 # Hook for site-specific additional pre-deployment config,
507 # applying to all nodes, e.g node registration/unregistration
509 depends_on: [ControllerExtraConfigPre, NodeTLSData]
510 type: OS::TripleO::NodeExtraConfig
512 server: {get_resource: Controller}
515 type: OS::TripleO::Tasks::PackageUpdate
518 type: OS::Heat::SoftwareDeployment
520 name: UpdateDeployment
521 config: {get_resource: UpdateConfig}
522 server: {get_resource: Controller}
525 get_param: UpdateIdentifier
529 description: IP address of the server in the ctlplane network
530 value: {get_attr: [Controller, networks, ctlplane, 0]}
532 description: IP address of the server in the external network
533 value: {get_attr: [ExternalPort, ip_address]}
534 internal_api_ip_address:
535 description: IP address of the server in the internal_api network
536 value: {get_attr: [InternalApiPort, ip_address]}
538 description: IP address of the server in the storage network
539 value: {get_attr: [StoragePort, ip_address]}
540 storage_mgmt_ip_address:
541 description: IP address of the server in the storage_mgmt network
542 value: {get_attr: [StorageMgmtPort, ip_address]}
544 description: IP address of the server in the tenant network
545 value: {get_attr: [TenantPort, ip_address]}
546 management_ip_address:
547 description: IP address of the server in the management network
548 value: {get_attr: [ManagementPort, ip_address]}
550 description: Hostname of the server
551 value: {get_attr: [Controller, name]}
553 description: Mapping of network names to hostnames
555 external: {get_attr: [NetHostMap, value, external, fqdn]}
556 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
557 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
558 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
559 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
560 management: {get_attr: [NetHostMap, value, management, fqdn]}
561 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
564 Server's IP address and hostname in the /etc/hosts format
568 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
569 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
570 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
571 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
572 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
573 TENANTIP TENANTHOST.DOMAIN TENANTHOST
574 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
575 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
577 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
578 DOMAIN: {get_param: CloudDomain}
579 PRIMARYHOST: {get_attr: [Controller, name]}
580 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
581 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
582 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
583 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
584 STORAGEIP: {get_attr: [StoragePort, ip_address]}
585 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
586 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
587 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
588 TENANTIP: {get_attr: [TenantPort, ip_address]}
589 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
590 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
591 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
592 CTLPLANEIP: {get_attr: [Controller, networks, ctlplane, 0]}
593 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
594 nova_server_resource:
595 description: Heat resource handle for the Nova compute server
597 {get_resource: Controller}
599 description: MD5 checksum of the TLS Key Modulus
600 value: {get_attr: [NodeTLSData, key_modulus_md5]}
601 tls_cert_modulus_md5:
602 description: MD5 checksum of the TLS Certificate Modulus
603 value: {get_attr: [NodeTLSData, cert_modulus_md5]}