1 heat_template_version: 2016-04-08
4 Deploy an OpenStack environment, consisting of several node types (roles),
5 Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
6 roles enable independent scaling of the storage components, but the minimal
7 deployment is one Controller and one Compute node.
10 # TODO(shadower): we should probably use the parameter groups to put
14 # Common parameters (not specific to a role)
16 description: The password for the keystone admin account, used for monitoring, querying neutron etc.
19 CinderEnableNfsBackend:
21 description: Whether to enable or not the NFS backend for Cinder
23 CinderEnableRbdBackend:
25 description: Whether to enable or not the Rbd backend for Cinder
29 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
33 description: Should be used for arbitrary ips.
37 description: Set to True to enable debugging on all services.
39 InternalApiVirtualFixedIPs:
42 Control the IP allocation for the InternalApiVirtualInterface port. E.g.
43 [{'ip_address':'1.2.3.4'}]
45 NeutronControlPlaneID:
48 description: Neutron ID or name for ctlplane network.
50 description: The password for the neutron service account, used by neutron agents.
53 NeutronPublicInterface:
55 description: What interface to bridge onto br-ex for network nodes.
59 description: Enable IPv6 features in Nova
62 description: The password for the nova service account, used by nova-api.
65 PublicVirtualFixedIPs:
68 Control the IP allocation for the PublicVirtualInterface port. E.g.
69 [{'ip_address':'1.2.3.4'}]
74 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
77 description: The username for RabbitMQ
80 description: The password for RabbitMQ
86 Rabbit client subscriber parameter to specify
87 an SSL connection to the RabbitMQ host.
91 description: Set rabbit subscriber port, change this if using SSL
93 StorageVirtualFixedIPs:
96 Control the IP allocation for the StorageVirtualInterface port. E.g.
97 [{'ip_address':'1.2.3.4'}]
99 StorageMgmtVirtualFixedIPs:
102 Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
103 [{'ip_address':'1.2.3.4'}]
106 default: 'localdomain'
109 The DNS domain used for the hosts. This should match the dhcp_domain
110 configured in the Undercloud neutron. Defaults to localdomain.
114 Extra properties or metadata passed to Nova for the created nodes in
115 the overcloud. It's accessible via the Nova metadata API.
118 # Controller-specific params
122 controllerExtraConfig:
125 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
127 OvercloudControlFlavor:
128 description: Flavor for control nodes to request when deploying.
132 - custom_constraint: nova.flavor
136 Additional configuration to inject into the cluster. The format required
137 may be implementation specific, e.g puppet hieradata. Any role specific
138 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
141 description: A random string to be used as a salt when hashing to determine mappings in the ring.
146 # Compute-specific params
150 HypervisorNeutronPhysicalBridge:
153 An OVS bridge to create on each hypervisor. This defaults to br-ex the
154 same as the control plane nodes, as we have a uniform configuration of
155 the openvswitch agent. Typically should not need to be changed.
157 HypervisorNeutronPublicInterface:
159 description: What interface to add to the HypervisorNeutronPhysicalBridge.
163 default: libvirt.LibvirtDriver
164 NovaComputeExtraConfig:
167 NovaCompute specific configuration to inject into the cluster. Same
168 structure as ExtraConfig.
170 NovaComputeLibvirtType:
173 NovaComputeLibvirtVifDriver:
175 description: Libvirt VIF driver configuration for the network
177 NovaEnableRbdBackend:
179 description: Whether to enable or not the Rbd backend for Nova
183 description: Name of integration bridge used by Open vSwitch
185 NovaSecurityGroupAPI:
187 description: The full class name of the security API class
189 OvercloudComputeFlavor:
190 description: Use this flavor
194 - custom_constraint: nova.flavor
197 NeutronTenantNetwork: tenant
198 CeilometerApiNetwork: internal_api
199 AodhApiNetwork: internal_api
200 GnocchiApiNetwork: internal_api
201 MongoDbNetwork: internal_api
202 CinderApiNetwork: internal_api
203 CinderIscsiNetwork: storage
204 GlanceApiNetwork: storage
205 GlanceRegistryNetwork: internal_api
206 IronicApiNetwork: internal_api
207 KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
208 KeystonePublicApiNetwork: internal_api
209 NeutronApiNetwork: internal_api
210 HeatApiNetwork: internal_api
211 NovaApiNetwork: internal_api
212 NovaMetadataNetwork: internal_api
213 NovaVncProxyNetwork: internal_api
214 SwiftMgmtNetwork: storage_mgmt
215 SwiftProxyNetwork: storage
216 SaharaApiNetwork: internal_api
217 HorizonNetwork: internal_api
218 MemcachedNetwork: internal_api
219 RabbitMqNetwork: internal_api
220 RedisNetwork: internal_api
221 MysqlNetwork: internal_api
222 CephClusterNetwork: storage_mgmt
223 CephPublicNetwork: storage
224 ControllerHostnameResolveNetwork: internal_api
225 ComputeHostnameResolveNetwork: internal_api
226 BlockStorageHostnameResolveNetwork: internal_api
227 ObjectStorageHostnameResolveNetwork: internal_api
228 CephStorageHostnameResolveNetwork: storage
229 description: Mapping of service_name -> network name. Typically set
230 via parameter_defaults in the resource registry.
235 - OS::TripleO::Services::CephMon
236 - OS::TripleO::Services::CephExternal
237 - OS::TripleO::Services::CinderApi
238 - OS::TripleO::Services::CinderScheduler
239 - OS::TripleO::Services::CinderVolume
240 - OS::TripleO::Services::Kernel
241 - OS::TripleO::Services::Keystone
242 - OS::TripleO::Services::GlanceApi
243 - OS::TripleO::Services::GlanceRegistry
244 - OS::TripleO::Services::HeatApi
245 - OS::TripleO::Services::HeatApiCfn
246 - OS::TripleO::Services::HeatApiCloudwatch
247 - OS::TripleO::Services::HeatEngine
248 - OS::TripleO::Services::MySQL
249 - OS::TripleO::Services::NeutronDhcpAgent
250 - OS::TripleO::Services::NeutronL3Agent
251 - OS::TripleO::Services::NeutronMetadataAgent
252 - OS::TripleO::Services::NeutronServer
253 - OS::TripleO::Services::NeutronCorePlugin
254 - OS::TripleO::Services::NeutronOvsAgent
255 - OS::TripleO::Services::RabbitMQ
256 - OS::TripleO::Services::HAproxy
257 - OS::TripleO::Services::Keepalived
258 - OS::TripleO::Services::Memcached
259 - OS::TripleO::Services::Pacemaker
260 - OS::TripleO::Services::Redis
261 - OS::TripleO::Services::NovaConductor
262 - OS::TripleO::Services::MongoDb
263 - OS::TripleO::Services::NovaApi
264 - OS::TripleO::Services::NovaScheduler
265 - OS::TripleO::Services::NovaConsoleauth
266 - OS::TripleO::Services::NovaVncproxy
267 - OS::TripleO::Services::Ntp
268 - OS::TripleO::Services::SwiftProxy
269 - OS::TripleO::Services::SwiftStorage
270 - OS::TripleO::Services::SwiftRingBuilder
271 - OS::TripleO::Services::Snmp
272 - OS::TripleO::Services::Timezone
273 - OS::TripleO::Services::CeilometerApi
274 - OS::TripleO::Services::CeilometerCollector
275 - OS::TripleO::Services::CeilometerExpirer
276 - OS::TripleO::Services::CeilometerAgentCentral
277 - OS::TripleO::Services::CeilometerAgentNotification
278 - OS::TripleO::Services::Horizon
279 - OS::TripleO::Services::GnocchiApi
280 - OS::TripleO::Services::GnocchiMetricd
281 - OS::TripleO::Services::GnocchiStatsd
283 description: A list of service resources (configured in the Heat
284 resource_registry) which represent nested stacks
285 for each service that should get installed on the Controllers.
286 type: comma_delimited_list
290 - OS::TripleO::Services::CephClient
291 - OS::TripleO::Services::CephExternal
292 - OS::TripleO::Services::Timezone
293 - OS::TripleO::Services::Ntp
294 - OS::TripleO::Services::Snmp
295 - OS::TripleO::Services::NovaCompute
296 - OS::TripleO::Services::NovaLibvirt
297 - OS::TripleO::Services::Kernel
298 - OS::TripleO::Services::ComputeNeutronCorePlugin
299 - OS::TripleO::Services::ComputeNeutronOvsAgent
300 - OS::TripleO::Services::ComputeCeilometerAgent
301 description: A list of service resources (configured in the Heat
302 resource_registry) which represent nested stacks
303 for each service that should get installed on the Compute Nodes.
304 type: comma_delimited_list
306 # Block storage specific parameters
310 OvercloudBlockStorageFlavor:
311 description: Flavor for block storage nodes to request when deploying.
315 - custom_constraint: nova.flavor
316 BlockStorageExtraConfig:
319 BlockStorage specific configuration to inject into the cluster. Same
320 structure as ExtraConfig.
322 BlockStorageServices:
324 - OS::TripleO::Services::CinderVolume
325 - OS::TripleO::Services::Kernel
326 - OS::TripleO::Services::Ntp
327 - OS::TripleO::Services::Timezone
328 - OS::TripleO::Services::Snmp
329 description: A list of service resources (configured in the Heat
330 resource_registry) which represent nested stacks
331 for each service that should get installed on the BlockStorage nodes.
332 type: comma_delimited_list
334 # Object storage specific parameters
338 OvercloudSwiftStorageFlavor:
339 description: Flavor for Swift storage nodes to request when deploying.
343 - custom_constraint: nova.flavor
344 ObjectStorageExtraConfig:
347 ObjectStorage specific configuration to inject into the cluster. Same
348 structure as ExtraConfig.
350 ObjectStorageServices:
352 - OS::TripleO::Services::Kernel
353 - OS::TripleO::Services::Ntp
354 - OS::TripleO::Services::SwiftStorage
355 - OS::TripleO::Services::SwiftRingBuilder
356 - OS::TripleO::Services::Snmp
357 - OS::TripleO::Services::Timezone
358 description: A list of service resources (configured in the Heat
359 resource_registry) which represent nested stacks
360 for each service that should get installed on the ObjectStorage nodes.
361 Note this role currently only supports steps 2, 3 and 4 configuration.
362 type: comma_delimited_list
365 # Ceph storage specific parameters
369 OvercloudCephStorageFlavor:
371 description: Flavor for Ceph storage nodes to request when deploying.
374 - custom_constraint: nova.flavor
375 CephStorageExtraConfig:
378 CephStorage specific configuration to inject into the cluster. Same
379 structure as ExtraConfig.
383 - OS::TripleO::Services::CephOSD
384 - OS::TripleO::Services::Kernel
385 - OS::TripleO::Services::Ntp
386 - OS::TripleO::Services::Timezone
387 description: A list of service resources (configured in the Heat
388 resource_registry) which represent nested stacks
389 for each service that should get installed on the CephStorage nodes.
390 type: comma_delimited_list
392 # Hostname format for each role
393 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
394 # and %stackname% is replaced with OS::stack_name in the template below.
395 # If you want to use the heat generated names, pass '' (empty string).
396 ControllerHostnameFormat:
398 description: Format for Controller node hostnames
399 default: '%stackname%-controller-%index%'
400 ComputeHostnameFormat:
402 description: Format for Compute node hostnames
403 default: '%stackname%-novacompute-%index%'
404 BlockStorageHostnameFormat:
406 description: Format for BlockStorage node hostnames
407 default: '%stackname%-blockstorage-%index%'
408 ObjectStorageHostnameFormat:
410 description: Format for SwiftStorage node hostnames
411 default: '%stackname%-objectstorage-%index%'
412 CephStorageHostnameFormat:
414 description: Format for CephStorage node hostnames
415 default: '%stackname%-cephstorage-%index%'
417 # Identifiers to trigger tasks on nodes
422 Setting to a previously unused value during stack-update will trigger
423 package update on all nodes
428 Setting this to a unique value will re-run any deployment tasks which
429 perform configuration on a Heat stack-update.
431 # If you want to remove a specific node from a resource group, you can pass
432 # the node name or id as a <Group>RemovalPolicies parameter, for example:
433 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
434 ControllerRemovalPolicies:
438 List of resources to be removed from ControllerResourceGroup when
439 doing an update which requires removal of specific resources.
440 ComputeRemovalPolicies:
444 List of resources to be removed from ComputeResourceGroup when
445 doing an update which requires removal of specific resources.
446 BlockStorageRemovalPolicies:
450 List of resources to be removed from BlockStorageResourceGroup when
451 doing an update which requires removal of specific resources.
452 ObjectStorageRemovalPolicies:
456 List of resources to be removed from ObjectStorageResourceGroup when
457 doing an update which requires removal of specific resources.
458 CephStorageRemovalPolicies:
462 List of resources to be removed from CephStorageResourceGroup when
463 doing an update which requires removal of specific resources.
467 description: Do not use deprecated params, they will be removed.
469 - controllerExtraConfig
474 HeatAuthEncryptionKey:
475 type: OS::Heat::RandomString
478 type: OS::Heat::RandomString
483 type: OS::Heat::RandomString
488 type: OS::TripleO::EndpointMap
490 CloudName: {get_param: CloudName}
491 CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
492 AodhApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
493 CinderApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
494 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
495 GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
496 GnocchiApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
497 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
498 IronicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
499 KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
500 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
501 MysqlVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
502 MysqlNoBracketsVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
503 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
504 NovaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
505 SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
506 SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
507 PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
509 ControllerServiceChain:
510 type: OS::TripleO::Services
512 Services: {get_param: ControllerServices}
513 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
516 type: OS::Heat::ResourceGroup
519 count: {get_param: ControllerCount}
520 removal_policies: {get_param: ControllerRemovalPolicies}
522 type: OS::TripleO::Controller
524 controllerExtraConfig: {get_param: controllerExtraConfig}
525 Flavor: {get_param: OvercloudControlFlavor}
526 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
527 HorizonSecret: {get_resource: HorizonSecret}
528 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
529 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
530 PcsdPassword: {get_resource: PcsdPassword}
531 RabbitCookie: {get_attr: [RabbitCookie, value]}
532 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
533 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
534 ServiceNetMap: {get_param: ServiceNetMap}
535 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
536 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
539 template: {get_param: ControllerHostnameFormat}
541 '%stackname%': {get_param: 'OS::stack_name'}
543 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
544 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
548 type: OS::TripleO::Services
550 Services: {get_param: ComputeServices}
551 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
554 type: OS::Heat::ResourceGroup
557 count: {get_param: ComputeCount}
558 removal_policies: {get_param: ComputeRemovalPolicies}
560 type: OS::TripleO::Compute
562 AdminPassword: {get_param: AdminPassword}
563 CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
564 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
565 Debug: {get_param: Debug}
566 ExtraConfig: {get_param: ExtraConfig}
567 Flavor: {get_param: OvercloudComputeFlavor}
568 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
569 KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
570 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
571 NeutronPassword: {get_param: NeutronPassword}
572 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
573 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
574 # L3 HA and Failover is not relevant for Computes, should be removed
575 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
576 NovaComputeDriver: {get_param: NovaComputeDriver}
577 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
578 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
579 NovaComputeLibvirtVifDriver: {get_param: NovaComputeLibvirtVifDriver}
580 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
581 NovaIPv6: {get_param: NovaIPv6}
582 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
583 NovaPassword: {get_param: NovaPassword}
584 NovaOVSBridge: {get_param: NovaOVSBridge}
585 NovaSecurityGroupAPI: {get_param: NovaSecurityGroupAPI}
586 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
587 RabbitPassword: {get_param: RabbitPassword}
588 RabbitUserName: {get_param: RabbitUserName}
589 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
590 RabbitClientPort: {get_param: RabbitClientPort}
591 ServiceNetMap: {get_param: ServiceNetMap}
592 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
593 UpdateIdentifier: {get_param: UpdateIdentifier}
596 template: {get_param: ComputeHostnameFormat}
598 '%stackname%': {get_param: 'OS::stack_name'}
599 CloudDomain: {get_param: CloudDomain}
600 ServerMetadata: {get_param: ServerMetadata}
602 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
603 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
605 BlockStorageServiceChain:
606 type: OS::TripleO::Services
608 Services: {get_param: BlockStorageServices}
609 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
612 type: OS::Heat::ResourceGroup
615 count: {get_param: BlockStorageCount}
616 removal_policies: {get_param: BlockStorageRemovalPolicies}
618 type: OS::TripleO::BlockStorage
620 Flavor: {get_param: OvercloudBlockStorageFlavor}
621 UpdateIdentifier: {get_param: UpdateIdentifier}
624 template: {get_param: BlockStorageHostnameFormat}
626 '%stackname%': {get_param: 'OS::stack_name'}
627 ServiceNetMap: {get_param: ServiceNetMap}
628 ExtraConfig: {get_param: ExtraConfig}
629 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
630 CloudDomain: {get_param: CloudDomain}
631 ServerMetadata: {get_param: ServerMetadata}
633 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
634 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
636 ObjectStorageServiceChain:
637 type: OS::TripleO::Services
639 Services: {get_param: ObjectStorageServices}
640 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
643 type: OS::Heat::ResourceGroup
646 count: {get_param: ObjectStorageCount}
647 removal_policies: {get_param: ObjectStorageRemovalPolicies}
649 type: OS::TripleO::ObjectStorage
651 Flavor: {get_param: OvercloudSwiftStorageFlavor}
652 HashSuffix: {get_param: SwiftHashSuffix}
653 UpdateIdentifier: {get_param: UpdateIdentifier}
654 ServiceNetMap: {get_param: ServiceNetMap}
657 template: {get_param: ObjectStorageHostnameFormat}
659 '%stackname%': {get_param: 'OS::stack_name'}
660 ExtraConfig: {get_param: ExtraConfig}
661 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
662 CloudDomain: {get_param: CloudDomain}
663 ServerMetadata: {get_param: ServerMetadata}
665 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
666 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
668 CephStorageServiceChain:
669 type: OS::TripleO::Services
671 Services: {get_param: CephStorageServices}
672 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
675 type: OS::Heat::ResourceGroup
678 count: {get_param: CephStorageCount}
679 removal_policies: {get_param: CephStorageRemovalPolicies}
681 type: OS::TripleO::CephStorage
683 Flavor: {get_param: OvercloudCephStorageFlavor}
684 ServiceNetMap: {get_param: ServiceNetMap}
685 UpdateIdentifier: {get_param: UpdateIdentifier}
688 template: {get_param: CephStorageHostnameFormat}
690 '%stackname%': {get_param: 'OS::stack_name'}
691 ExtraConfig: {get_param: ExtraConfig}
692 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
693 CloudDomain: {get_param: CloudDomain}
694 ServerMetadata: {get_param: ServerMetadata}
696 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
697 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
700 type: OS::TripleO::Network::Ports::NetIpListMap
702 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
703 ExternalIpList: {get_attr: [Controller, external_ip_address]}
704 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
705 StorageIpList: {get_attr: [Controller, storage_ip_address]}
706 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
707 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
708 ManagementIpList: {get_attr: [Controller, management_ip_address]}
711 type: OS::TripleO::AllNodes::SoftwareConfig
713 compute_hosts: {get_attr: [Compute, hosts_entry]}
714 controller_hosts: {get_attr: [Controller, hosts_entry]}
715 controller_ips: {get_attr: [Controller, ip_address]}
716 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
717 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
718 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
719 controller_names: {get_attr: [Controller, hostname]}
720 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
721 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
722 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
723 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
724 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
725 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
726 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
727 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
728 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
729 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
730 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
731 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
732 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
733 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
734 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
735 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
736 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
737 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
738 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
739 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
740 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
741 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
742 ceph_mon_node_names: {get_attr: [Controller, hostname]}
743 DeployIdentifier: {get_param: DeployIdentifier}
744 UpdateIdentifier: {get_param: UpdateIdentifier}
747 type: OS::Heat::RandomString
751 MysqlClusterUniquePart:
752 type: OS::Heat::RandomString
757 type: OS::Heat::RandomString
760 salt: {get_param: RabbitCookieSalt}
762 # creates the network architecture
764 type: OS::TripleO::Network
767 type: OS::Neutron::Port
770 name: control_virtual_ip
771 network: {get_param: NeutronControlPlaneID}
772 fixed_ips: {get_param: ControlFixedIPs}
773 replacement_policy: AUTO
777 type: OS::TripleO::Network::Ports::RedisVipPort
779 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
780 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
781 PortName: redis_virtual_ip
782 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
785 # The public VIP is on the External net, falls back to ctlplane
788 type: OS::TripleO::Network::Ports::ExternalVipPort
790 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
791 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
792 PortName: public_virtual_ip
793 FixedIPs: {get_param: PublicVirtualFixedIPs}
795 InternalApiVirtualIP:
797 type: OS::TripleO::Network::Ports::InternalApiVipPort
799 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
800 PortName: internal_api_virtual_ip
801 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
805 type: OS::TripleO::Network::Ports::StorageVipPort
807 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
808 PortName: storage_virtual_ip
809 FixedIPs: {get_param: StorageVirtualFixedIPs}
811 StorageMgmtVirtualIP:
813 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
815 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
816 PortName: storage_management_virtual_ip
817 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
820 type: OS::TripleO::Network::Ports::NetVipMap
822 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
823 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
824 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
825 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
826 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
827 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
828 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
829 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
830 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
831 # No tenant or management VIP required
834 type: OS::TripleO::VipConfig
837 type: OS::Heat::StructuredDeployments
840 config: {get_resource: VipConfig}
841 servers: {get_attr: [Controller, attributes, nova_server_resource]}
843 # service VIP mappings
844 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
845 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
846 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
847 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
848 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
849 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
850 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
851 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
852 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
853 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
854 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
855 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
856 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
857 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
858 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
859 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
860 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
861 # direct configuration of Virtual IPs for each network
862 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
863 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
864 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
865 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
866 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
867 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
868 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
870 ControllerSwiftDeployment:
871 type: OS::Heat::StructuredDeployments
873 name: ControllerSwiftDeployment
874 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
875 servers: {get_attr: [Controller, attributes, nova_server_resource]}
877 ObjectStorageSwiftDeployment:
878 type: OS::Heat::StructuredDeployments
880 name: ObjectStorageSwiftDeployment
881 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
882 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
884 SwiftDevicesAndProxyConfig:
885 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
887 controller_swift_devices: {get_attr: [Controller, swift_device]}
888 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
889 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
891 ControllerAllNodesDeployment:
892 type: OS::Heat::StructuredDeployments
894 name: ControllerAllNodesDeployment
895 config: {get_attr: [allNodesConfig, config_id]}
896 servers: {get_attr: [Controller, attributes, nova_server_resource]}
898 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
899 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
901 ComputeAllNodesDeployment:
902 type: OS::Heat::StructuredDeployments
904 name: ComputeAllNodesDeployment
905 config: {get_attr: [allNodesConfig, config_id]}
906 servers: {get_attr: [Compute, attributes, nova_server_resource]}
908 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
909 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
911 BlockStorageAllNodesDeployment:
912 type: OS::Heat::StructuredDeployments
914 name: BlockStorageAllNodesDeployment
915 config: {get_attr: [allNodesConfig, config_id]}
916 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
918 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
919 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
921 ObjectStorageAllNodesDeployment:
922 type: OS::Heat::StructuredDeployments
924 name: ObjectStorageAllNodesDeployment
925 config: {get_attr: [allNodesConfig, config_id]}
926 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
928 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
929 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
931 CephStorageAllNodesDeployment:
932 type: OS::Heat::StructuredDeployments
934 name: CephStorageAllNodesDeployment
935 config: {get_attr: [allNodesConfig, config_id]}
936 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
938 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
939 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
941 # All Nodes Validations
942 AllNodesValidationConfig:
943 type: OS::TripleO::AllNodes::Validation
948 - - {get_attr: [Controller, resource.0.external_ip_address]}
949 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
950 - {get_attr: [Controller, resource.0.storage_ip_address]}
951 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
952 - {get_attr: [Controller, resource.0.tenant_ip_address]}
954 ControllerAllNodesValidationDeployment:
955 type: OS::Heat::StructuredDeployments
956 depends_on: ControllerAllNodesDeployment
958 name: ControllerAllNodesValidationDeployment
959 config: {get_resource: AllNodesValidationConfig}
960 servers: {get_attr: [Controller, attributes, nova_server_resource]}
962 ComputeAllNodesValidationDeployment:
963 type: OS::Heat::StructuredDeployments
964 depends_on: ComputeAllNodesDeployment
966 name: ComputeAllNodesValidationDeployment
967 config: {get_resource: AllNodesValidationConfig}
968 servers: {get_attr: [Compute, attributes, nova_server_resource]}
970 BlockStorageAllNodesValidationDeployment:
971 type: OS::Heat::StructuredDeployments
972 depends_on: BlockStorageAllNodesDeployment
974 name: BlockStorageAllNodesValidationDeployment
975 config: {get_resource: AllNodesValidationConfig}
976 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
978 ObjectStorageAllNodesValidationDeployment:
979 type: OS::Heat::StructuredDeployments
980 depends_on: ObjectStorageAllNodesDeployment
982 name: ObjectStorageAllNodesValidationDeployment
983 config: {get_resource: AllNodesValidationConfig}
984 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
986 CephStorageAllNodesValidationDeployment:
987 type: OS::Heat::StructuredDeployments
988 depends_on: CephStorageAllNodesDeployment
990 name: CephStorageAllNodesValidationDeployment
991 config: {get_resource: AllNodesValidationConfig}
992 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
995 type: OS::TripleO::Tasks::UpdateWorkflow
997 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
998 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
999 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1000 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1001 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1003 deploy_identifier: {get_param: DeployIdentifier}
1004 update_identifier: {get_param: UpdateIdentifier}
1006 # Optional ExtraConfig for all nodes - all roles are passed in here, but
1007 # the nested template may configure each role differently (or not at all)
1008 AllNodesExtraConfig:
1009 type: OS::TripleO::AllNodesExtraConfig
1012 - ComputeAllNodesValidationDeployment
1013 - BlockStorageAllNodesValidationDeployment
1014 - ObjectStorageAllNodesValidationDeployment
1015 - CephStorageAllNodesValidationDeployment
1016 - ControllerAllNodesValidationDeployment
1018 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
1019 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
1020 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1021 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1022 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1024 # Nested stack deployment runs after all other controller deployments
1025 ControllerNodesPostDeployment:
1026 type: OS::TripleO::ControllerPostDeployment
1027 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
1029 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1030 RoleData: {get_attr: [ControllerServiceChain, role_data]}
1032 ComputeNodesPostDeployment:
1033 type: OS::TripleO::ComputePostDeployment
1034 depends_on: [ComputeAllNodesDeployment]
1036 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1037 RoleData: {get_attr: [ComputeServiceChain, role_data]}
1039 ObjectStorageNodesPostDeployment:
1040 type: OS::TripleO::ObjectStoragePostDeployment
1041 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1043 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1044 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
1046 BlockStorageNodesPostDeployment:
1047 type: OS::TripleO::BlockStoragePostDeployment
1048 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1050 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1051 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
1053 CephStorageNodesPostDeployment:
1054 type: OS::TripleO::CephStoragePostDeployment
1055 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
1057 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1058 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
1062 description: URL for the Overcloud Keystone service
1063 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
1065 description: Keystone Admin VIP endpoint
1066 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1068 description: Controller VIP for public API endpoints
1069 value: {get_attr: [VipMap, net_ip_map, external]}
1071 description: VIP for Aodh API internal endpoint
1072 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1073 CeilometerInternalVip:
1074 description: VIP for Ceilometer API internal endpoint
1075 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1077 description: VIP for Cinder API internal endpoint
1078 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1080 description: VIP for Glance API internal endpoint
1081 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1083 description: VIP for Gnocchi API internal endpoint
1084 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1086 description: VIP for Heat API internal endpoint
1087 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1089 description: VIP for Ironic API internal endpoint
1090 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
1091 KeystoneInternalVip:
1092 description: VIP for Keystone API internal endpoint
1093 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1095 description: VIP for Neutron API internal endpoint
1096 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1098 description: VIP for Nova API internal endpoint
1099 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1101 description: VIP for Sahara API internal endpoint
1102 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1104 description: VIP for Swift Proxy internal endpoint
1105 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1108 Mapping of the resources with the needed info for their endpoints.
1109 This includes the protocol used, the IP, port and also a full
1110 representation of the URI.
1111 value: {get_attr: [EndpointMap, endpoint_map]}
1114 The content that should be appended to your /etc/hosts if you want to get
1115 hostname-based access to the deployed nodes (useful for testing without
1117 value: {get_attr: [allNodesConfig, hosts_entries]}