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
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}
195 # Creates the "heat-admin" user if configured via the environment
196 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
198 type: OS::TripleO::NodeAdminUserData
200 # For optional operator additional userdata
201 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
203 type: OS::TripleO::NodeUserData
206 type: OS::TripleO::Controller::Ports::ExternalPort
208 IPPool: {get_param: ControllerIPs}
209 NodeIndex: {get_param: NodeIndex}
210 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
213 type: OS::TripleO::Controller::Ports::InternalApiPort
215 IPPool: {get_param: ControllerIPs}
216 NodeIndex: {get_param: NodeIndex}
217 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
220 type: OS::TripleO::Controller::Ports::StoragePort
222 IPPool: {get_param: ControllerIPs}
223 NodeIndex: {get_param: NodeIndex}
224 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
227 type: OS::TripleO::Controller::Ports::StorageMgmtPort
229 IPPool: {get_param: ControllerIPs}
230 NodeIndex: {get_param: NodeIndex}
231 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
234 type: OS::TripleO::Controller::Ports::TenantPort
236 IPPool: {get_param: ControllerIPs}
237 NodeIndex: {get_param: NodeIndex}
238 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
241 type: OS::TripleO::Controller::Ports::ManagementPort
243 IPPool: {get_param: ControllerIPs}
244 NodeIndex: {get_param: NodeIndex}
245 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
248 type: OS::TripleO::Network::Ports::NetIpMap
250 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
251 ExternalIp: {get_attr: [ExternalPort, ip_address]}
252 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
253 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
254 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
255 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
256 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
257 StorageIp: {get_attr: [StoragePort, ip_address]}
258 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
259 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
260 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
261 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
262 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
263 TenantIp: {get_attr: [TenantPort, ip_address]}
264 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
265 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
266 ManagementIp: {get_attr: [ManagementPort, ip_address]}
267 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
268 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
271 type: OS::Heat::Value
279 - - {get_attr: [Controller, name]}
281 - {get_param: CloudDomain}
285 - - {get_attr: [Controller, name]}
291 - - {get_attr: [Controller, name]}
293 - {get_param: CloudDomain}
297 - - {get_attr: [Controller, name]}
303 - - {get_attr: [Controller, name]}
305 - {get_param: CloudDomain}
309 - - {get_attr: [Controller, name]}
315 - - {get_attr: [Controller, name]}
317 - {get_param: CloudDomain}
321 - - {get_attr: [Controller, name]}
327 - - {get_attr: [Controller, name]}
329 - {get_param: CloudDomain}
333 - - {get_attr: [Controller, name]}
339 - - {get_attr: [Controller, name]}
341 - {get_param: CloudDomain}
345 - - {get_attr: [Controller, name]}
351 - - {get_attr: [Controller, name]}
353 - {get_param: CloudDomain}
357 - - {get_attr: [Controller, name]}
361 type: OS::TripleO::Controller::Net::SoftwareConfig
363 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
364 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
365 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
366 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
367 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
368 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
369 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
372 type: OS::TripleO::SoftwareDeployment
374 name: NetworkDeployment
375 config: {get_resource: NetworkConfig}
376 server: {get_resource: Controller}
377 actions: {get_param: NetworkDeploymentActions}
380 interface_name: {get_param: NeutronPublicInterface}
382 # Resource for site-specific injection of root certificate
384 depends_on: NetworkDeployment
385 type: OS::TripleO::NodeTLSCAData
387 server: {get_resource: Controller}
389 # Resource for site-specific passing of private keys/certificates
391 depends_on: NodeTLSCAData
392 type: OS::TripleO::NodeTLSData
394 server: {get_resource: Controller}
395 NodeIndex: {get_param: NodeIndex}
397 ControllerUpgradeInitConfig:
398 type: OS::Heat::SoftwareConfig
404 - - "#!/bin/bash\n\n"
405 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
406 - get_param: UpgradeInitCommand
408 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
409 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
410 ControllerUpgradeInitDeployment:
411 type: OS::Heat::SoftwareDeployment
412 depends_on: NetworkDeployment
414 name: ControllerUpgradeInitDeployment
415 server: {get_resource: Controller}
416 config: {get_resource: ControllerUpgradeInitConfig}
418 ControllerDeployment:
419 type: OS::TripleO::SoftwareDeployment
420 depends_on: ControllerUpgradeInitDeployment
422 name: ControllerDeployment
423 config: {get_resource: ControllerConfig}
424 server: {get_resource: Controller}
426 bootstack_nodeid: {get_attr: [Controller, name]}
427 enable_load_balancer: {get_param: EnableLoadBalancer}
428 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
430 # Map heat metadata into hiera datafiles
432 type: OS::Heat::StructuredConfig
438 - heat_config_%{::deploy_config_name}
439 - controller_extraconfig
444 - bootstrap_node # provided by BootstrapNodeConfig
445 - all_nodes # provided by allNodesConfig
446 - vip_data # provided by allNodesConfig
448 - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
449 - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
450 - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
451 - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
452 - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
453 - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
454 - midonet_data #Optionally provided by AllNodesExtraConfig
455 - cisco_aci_data # Optionally provided by ControllerExtraConfigPre
456 merge_behavior: deeper
459 service_names: {get_param: ServiceNames}
460 sensu::subscriptions: {get_param: MonitoringSubscriptions}
463 - {get_param: ServiceConfigSettings}
464 - values: {get_attr: [NetIpMap, net_ip_map]}
465 controller_extraconfig:
467 - {get_param: controllerExtraConfig}
468 - {get_param: ControllerExtraConfig}
469 extraconfig: {get_param: ExtraConfig}
471 # data supplied directly to this deployment configuration, etc
472 bootstack_nodeid: {get_input: bootstack_nodeid}
474 enable_load_balancer: {get_input: enable_load_balancer}
477 tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
478 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
479 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
480 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
481 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
482 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
483 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
484 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
486 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
487 ControllerExtraConfigPre:
488 depends_on: ControllerDeployment
489 type: OS::TripleO::ControllerExtraConfigPre
491 server: {get_resource: Controller}
493 # Hook for site-specific additional pre-deployment config,
494 # applying to all nodes, e.g node registration/unregistration
496 depends_on: [ControllerExtraConfigPre, NodeTLSData]
497 type: OS::TripleO::NodeExtraConfig
499 server: {get_resource: Controller}
502 type: OS::TripleO::Tasks::PackageUpdate
505 type: OS::Heat::SoftwareDeployment
507 name: UpdateDeployment
508 config: {get_resource: UpdateConfig}
509 server: {get_resource: Controller}
512 get_param: UpdateIdentifier
516 description: IP address of the server in the ctlplane network
517 value: {get_attr: [Controller, networks, ctlplane, 0]}
519 description: IP address of the server in the external network
520 value: {get_attr: [ExternalPort, ip_address]}
521 internal_api_ip_address:
522 description: IP address of the server in the internal_api network
523 value: {get_attr: [InternalApiPort, ip_address]}
525 description: IP address of the server in the storage network
526 value: {get_attr: [StoragePort, ip_address]}
527 storage_mgmt_ip_address:
528 description: IP address of the server in the storage_mgmt network
529 value: {get_attr: [StorageMgmtPort, ip_address]}
531 description: IP address of the server in the tenant network
532 value: {get_attr: [TenantPort, ip_address]}
533 management_ip_address:
534 description: IP address of the server in the management network
535 value: {get_attr: [ManagementPort, ip_address]}
537 description: Hostname of the server
538 value: {get_attr: [Controller, name]}
540 description: Mapping of network names to hostnames
542 external: {get_attr: [NetHostMap, value, external, fqdn]}
543 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
544 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
545 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
546 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
547 management: {get_attr: [NetHostMap, value, management, fqdn]}
548 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
551 Server's IP address and hostname in the /etc/hosts format
555 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
556 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
557 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
558 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
559 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
560 TENANTIP TENANTHOST.DOMAIN TENANTHOST
561 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
562 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
564 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
565 DOMAIN: {get_param: CloudDomain}
566 PRIMARYHOST: {get_attr: [Controller, name]}
567 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
568 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
569 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
570 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
571 STORAGEIP: {get_attr: [StoragePort, ip_address]}
572 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
573 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
574 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
575 TENANTIP: {get_attr: [TenantPort, ip_address]}
576 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
577 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
578 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
579 CTLPLANEIP: {get_attr: [Controller, networks, ctlplane, 0]}
580 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
581 nova_server_resource:
582 description: Heat resource handle for the Nova compute server
584 {get_resource: Controller}
586 description: MD5 checksum of the TLS Key Modulus
587 value: {get_attr: [NodeTLSData, key_modulus_md5]}
588 tls_cert_modulus_md5:
589 description: MD5 checksum of the TLS Certificate Modulus
590 value: {get_attr: [NodeTLSData, cert_modulus_md5]}