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.
150 UpgradeInitCommonCommand:
153 Common commands required by the upgrades process. This should not
154 normally be modified by the operator and is set and unset in the
155 major-upgrade-composable-steps.yaml and major-upgrade-converge.yaml
161 description: Do not use deprecated params, they will be removed.
163 - controllerExtraConfig
168 type: OS::TripleO::Server
171 command: {get_param: ConfigCommand}
173 image: {get_param: controllerImage}
174 image_update_policy: {get_param: ImageUpdatePolicy}
175 flavor: {get_param: OvercloudControlFlavor}
176 key_name: {get_param: KeyName}
179 user_data_format: SOFTWARE_CONFIG
180 user_data: {get_resource: UserData}
183 template: {get_param: Hostname}
184 params: {get_param: HostnameMap}
185 software_config_transport: {get_param: SoftwareConfigTransport}
188 - {get_param: ServerMetadata}
189 - {get_param: ControllerServerMetadata}
190 - {get_param: ServiceMetadataSettings}
191 scheduler_hints: {get_param: ControllerSchedulerHints}
193 # Combine the NodeAdminUserData and NodeUserData mime archives
195 type: OS::Heat::MultipartMime
198 - config: {get_resource: NodeAdminUserData}
200 - config: {get_resource: NodeUserData}
202 - config: {get_resource: RoleUserData}
205 # Creates the "heat-admin" user if configured via the environment
206 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
208 type: OS::TripleO::NodeAdminUserData
210 # For optional operator additional userdata
211 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
213 type: OS::TripleO::NodeUserData
215 # For optional operator role-specific userdata
216 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
218 type: OS::TripleO::Controller::NodeUserData
221 type: OS::TripleO::Controller::Ports::ExternalPort
223 IPPool: {get_param: ControllerIPs}
224 NodeIndex: {get_param: NodeIndex}
225 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
228 type: OS::TripleO::Controller::Ports::InternalApiPort
230 IPPool: {get_param: ControllerIPs}
231 NodeIndex: {get_param: NodeIndex}
232 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
235 type: OS::TripleO::Controller::Ports::StoragePort
237 IPPool: {get_param: ControllerIPs}
238 NodeIndex: {get_param: NodeIndex}
239 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
242 type: OS::TripleO::Controller::Ports::StorageMgmtPort
244 IPPool: {get_param: ControllerIPs}
245 NodeIndex: {get_param: NodeIndex}
246 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
249 type: OS::TripleO::Controller::Ports::TenantPort
251 IPPool: {get_param: ControllerIPs}
252 NodeIndex: {get_param: NodeIndex}
253 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
256 type: OS::TripleO::Controller::Ports::ManagementPort
258 IPPool: {get_param: ControllerIPs}
259 NodeIndex: {get_param: NodeIndex}
260 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
263 type: OS::TripleO::Network::Ports::NetIpMap
265 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
266 ExternalIp: {get_attr: [ExternalPort, ip_address]}
267 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
268 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
269 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
270 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
271 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
272 StorageIp: {get_attr: [StoragePort, ip_address]}
273 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
274 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
275 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
276 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
277 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
278 TenantIp: {get_attr: [TenantPort, ip_address]}
279 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
280 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
281 ManagementIp: {get_attr: [ManagementPort, ip_address]}
282 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
283 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
286 type: OS::Heat::Value
294 - - {get_attr: [Controller, name]}
296 - {get_param: CloudDomain}
300 - - {get_attr: [Controller, name]}
306 - - {get_attr: [Controller, name]}
308 - {get_param: CloudDomain}
312 - - {get_attr: [Controller, name]}
318 - - {get_attr: [Controller, name]}
320 - {get_param: CloudDomain}
324 - - {get_attr: [Controller, name]}
330 - - {get_attr: [Controller, name]}
332 - {get_param: CloudDomain}
336 - - {get_attr: [Controller, name]}
342 - - {get_attr: [Controller, name]}
344 - {get_param: CloudDomain}
348 - - {get_attr: [Controller, name]}
354 - - {get_attr: [Controller, name]}
356 - {get_param: CloudDomain}
360 - - {get_attr: [Controller, name]}
366 - - {get_attr: [Controller, name]}
368 - {get_param: CloudDomain}
372 - - {get_attr: [Controller, name]}
376 type: OS::TripleO::Controller::PreNetworkConfig
378 server: {get_resource: Controller}
381 type: OS::TripleO::Controller::Net::SoftwareConfig
383 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
384 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
385 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
386 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
387 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
388 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
389 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
392 type: OS::TripleO::SoftwareDeployment
393 depends_on: PreNetworkConfig
395 name: NetworkDeployment
396 config: {get_resource: NetworkConfig}
397 server: {get_resource: Controller}
398 actions: {get_param: NetworkDeploymentActions}
401 interface_name: {get_param: NeutronPublicInterface}
403 # Resource for site-specific injection of root certificate
405 depends_on: NetworkDeployment
406 type: OS::TripleO::NodeTLSCAData
408 server: {get_resource: Controller}
410 # Resource for site-specific passing of private keys/certificates
412 depends_on: NodeTLSCAData
413 type: OS::TripleO::NodeTLSData
415 server: {get_resource: Controller}
416 NodeIndex: {get_param: NodeIndex}
418 ControllerUpgradeInitConfig:
419 type: OS::Heat::SoftwareConfig
425 - - "#!/bin/bash\n\n"
426 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
427 - get_param: UpgradeInitCommand
428 - get_param: UpgradeInitCommonCommand
430 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
431 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
432 ControllerUpgradeInitDeployment:
433 type: OS::Heat::SoftwareDeployment
434 depends_on: NetworkDeployment
436 name: ControllerUpgradeInitDeployment
437 server: {get_resource: Controller}
438 config: {get_resource: ControllerUpgradeInitConfig}
440 ControllerDeployment:
441 type: OS::TripleO::SoftwareDeployment
442 depends_on: ControllerUpgradeInitDeployment
444 name: ControllerDeployment
445 config: {get_resource: ControllerConfig}
446 server: {get_resource: Controller}
448 bootstack_nodeid: {get_attr: [Controller, name]}
449 enable_load_balancer: {get_param: EnableLoadBalancer}
450 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
452 # Map heat metadata into hiera datafiles
454 type: OS::Heat::StructuredConfig
460 - heat_config_%{::deploy_config_name}
461 - controller_extraconfig
466 - bootstrap_node # provided by BootstrapNodeConfig
467 - all_nodes # provided by allNodesConfig
468 - vip_data # provided by allNodesConfig
470 - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
471 - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
472 - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
473 - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
474 - midonet_data #Optionally provided by AllNodesExtraConfig
475 - cisco_aci_data # Optionally provided by ControllerExtraConfigPre
476 merge_behavior: deeper
479 service_names: {get_param: ServiceNames}
480 sensu::subscriptions: {get_param: MonitoringSubscriptions}
483 - {get_param: ServiceConfigSettings}
484 - values: {get_attr: [NetIpMap, net_ip_map]}
485 controller_extraconfig:
487 - {get_param: controllerExtraConfig}
488 - {get_param: ControllerExtraConfig}
489 extraconfig: {get_param: ExtraConfig}
491 # data supplied directly to this deployment configuration, etc
492 bootstack_nodeid: {get_input: bootstack_nodeid}
494 enable_load_balancer: {get_input: enable_load_balancer}
497 tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
498 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
499 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
500 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
501 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
502 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
503 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
504 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
506 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
507 ControllerExtraConfigPre:
508 depends_on: ControllerDeployment
509 type: OS::TripleO::ControllerExtraConfigPre
511 server: {get_resource: Controller}
513 # Hook for site-specific additional pre-deployment config,
514 # applying to all nodes, e.g node registration/unregistration
516 depends_on: [ControllerExtraConfigPre, NodeTLSData]
517 type: OS::TripleO::NodeExtraConfig
519 server: {get_resource: Controller}
522 type: OS::TripleO::Tasks::PackageUpdate
525 type: OS::Heat::SoftwareDeployment
527 name: UpdateDeployment
528 config: {get_resource: UpdateConfig}
529 server: {get_resource: Controller}
532 get_param: UpdateIdentifier
536 description: IP address of the server in the ctlplane network
537 value: {get_attr: [Controller, networks, ctlplane, 0]}
539 description: IP address of the server in the external network
540 value: {get_attr: [ExternalPort, ip_address]}
541 internal_api_ip_address:
542 description: IP address of the server in the internal_api network
543 value: {get_attr: [InternalApiPort, ip_address]}
545 description: IP address of the server in the storage network
546 value: {get_attr: [StoragePort, ip_address]}
547 storage_mgmt_ip_address:
548 description: IP address of the server in the storage_mgmt network
549 value: {get_attr: [StorageMgmtPort, ip_address]}
551 description: IP address of the server in the tenant network
552 value: {get_attr: [TenantPort, ip_address]}
553 management_ip_address:
554 description: IP address of the server in the management network
555 value: {get_attr: [ManagementPort, ip_address]}
557 description: Hostname of the server
558 value: {get_attr: [Controller, name]}
560 description: Mapping of network names to hostnames
562 external: {get_attr: [NetHostMap, value, external, fqdn]}
563 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
564 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
565 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
566 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
567 management: {get_attr: [NetHostMap, value, management, fqdn]}
568 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
571 Server's IP address and hostname in the /etc/hosts format
575 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
576 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
577 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
578 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
579 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
580 TENANTIP TENANTHOST.DOMAIN TENANTHOST
581 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
582 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
584 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
585 DOMAIN: {get_param: CloudDomain}
586 PRIMARYHOST: {get_attr: [Controller, name]}
587 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
588 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
589 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
590 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
591 STORAGEIP: {get_attr: [StoragePort, ip_address]}
592 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
593 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
594 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
595 TENANTIP: {get_attr: [TenantPort, ip_address]}
596 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
597 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
598 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
599 CTLPLANEIP: {get_attr: [Controller, networks, ctlplane, 0]}
600 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
601 nova_server_resource:
602 description: Heat resource handle for the Nova compute server
604 {get_resource: Controller}
606 description: MD5 checksum of the TLS Key Modulus
607 value: {get_attr: [NodeTLSData, key_modulus_md5]}
608 tls_cert_modulus_md5:
609 description: MD5 checksum of the TLS Certificate Modulus
610 value: {get_attr: [NodeTLSData, cert_modulus_md5]}