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.
130 Additional configuration to inject into the cluster. The format required
131 may be implementation specific, e.g puppet hieradata. Any role specific
132 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
135 description: A random string to be used as a salt when hashing to determine mappings in the ring.
140 # Compute-specific params
144 HypervisorNeutronPhysicalBridge:
147 An OVS bridge to create on each hypervisor. This defaults to br-ex the
148 same as the control plane nodes, as we have a uniform configuration of
149 the openvswitch agent. Typically should not need to be changed.
151 HypervisorNeutronPublicInterface:
153 description: What interface to add to the HypervisorNeutronPhysicalBridge.
157 default: libvirt.LibvirtDriver
158 NovaComputeExtraConfig:
161 NovaCompute specific configuration to inject into the cluster. Same
162 structure as ExtraConfig.
164 NovaComputeLibvirtType:
167 NovaComputeLibvirtVifDriver:
169 description: Libvirt VIF driver configuration for the network
171 NovaEnableRbdBackend:
173 description: Whether to enable or not the Rbd backend for Nova
177 description: Name of integration bridge used by Open vSwitch
179 NovaSecurityGroupAPI:
181 description: The full class name of the security API class
185 NeutronTenantNetwork: tenant
186 CeilometerApiNetwork: internal_api
187 AodhApiNetwork: internal_api
188 GnocchiApiNetwork: internal_api
189 MongoDbNetwork: internal_api
190 CinderApiNetwork: internal_api
191 CinderIscsiNetwork: storage
192 GlanceApiNetwork: storage
193 GlanceRegistryNetwork: internal_api
194 IronicApiNetwork: internal_api
195 KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
196 KeystonePublicApiNetwork: internal_api
197 NeutronApiNetwork: internal_api
198 HeatApiNetwork: internal_api
199 NovaApiNetwork: internal_api
200 NovaMetadataNetwork: internal_api
201 NovaVncProxyNetwork: internal_api
202 SwiftMgmtNetwork: storage_mgmt
203 SwiftProxyNetwork: storage
204 SaharaApiNetwork: internal_api
205 HorizonNetwork: internal_api
206 MemcachedNetwork: internal_api
207 RabbitMqNetwork: internal_api
208 RedisNetwork: internal_api
209 MysqlNetwork: internal_api
210 CephClusterNetwork: storage_mgmt
211 CephPublicNetwork: storage
212 ControllerHostnameResolveNetwork: internal_api
213 ComputeHostnameResolveNetwork: internal_api
214 BlockStorageHostnameResolveNetwork: internal_api
215 ObjectStorageHostnameResolveNetwork: internal_api
216 CephStorageHostnameResolveNetwork: storage
217 description: Mapping of service_name -> network name. Typically set
218 via parameter_defaults in the resource registry.
223 - OS::TripleO::Services::CephMon
224 - OS::TripleO::Services::CephExternal
225 - OS::TripleO::Services::CinderApi
226 - OS::TripleO::Services::CinderScheduler
227 - OS::TripleO::Services::CinderVolume
228 - OS::TripleO::Services::Kernel
229 - OS::TripleO::Services::Keystone
230 - OS::TripleO::Services::GlanceApi
231 - OS::TripleO::Services::GlanceRegistry
232 - OS::TripleO::Services::HeatApi
233 - OS::TripleO::Services::HeatApiCfn
234 - OS::TripleO::Services::HeatApiCloudwatch
235 - OS::TripleO::Services::HeatEngine
236 - OS::TripleO::Services::MySQL
237 - OS::TripleO::Services::NeutronDhcpAgent
238 - OS::TripleO::Services::NeutronL3Agent
239 - OS::TripleO::Services::NeutronMetadataAgent
240 - OS::TripleO::Services::NeutronServer
241 - OS::TripleO::Services::NeutronCorePlugin
242 - OS::TripleO::Services::NeutronOvsAgent
243 - OS::TripleO::Services::RabbitMQ
244 - OS::TripleO::Services::HAproxy
245 - OS::TripleO::Services::Keepalived
246 - OS::TripleO::Services::Memcached
247 - OS::TripleO::Services::Pacemaker
248 - OS::TripleO::Services::Redis
249 - OS::TripleO::Services::NovaConductor
250 - OS::TripleO::Services::MongoDb
251 - OS::TripleO::Services::NovaApi
252 - OS::TripleO::Services::NovaScheduler
253 - OS::TripleO::Services::NovaConsoleauth
254 - OS::TripleO::Services::NovaVncproxy
255 - OS::TripleO::Services::Ntp
256 - OS::TripleO::Services::SwiftProxy
257 - OS::TripleO::Services::SwiftStorage
258 - OS::TripleO::Services::SwiftRingBuilder
259 - OS::TripleO::Services::Snmp
260 - OS::TripleO::Services::Timezone
261 - OS::TripleO::Services::CeilometerApi
262 - OS::TripleO::Services::CeilometerCollector
263 - OS::TripleO::Services::CeilometerExpirer
264 - OS::TripleO::Services::CeilometerAgentCentral
265 - OS::TripleO::Services::CeilometerAgentNotification
266 - OS::TripleO::Services::Horizon
267 - OS::TripleO::Services::GnocchiApi
268 - OS::TripleO::Services::GnocchiMetricd
269 - OS::TripleO::Services::GnocchiStatsd
271 description: A list of service resources (configured in the Heat
272 resource_registry) which represent nested stacks
273 for each service that should get installed on the Controllers.
274 type: comma_delimited_list
278 - OS::TripleO::Services::CephClient
279 - OS::TripleO::Services::CephExternal
280 - OS::TripleO::Services::Timezone
281 - OS::TripleO::Services::Ntp
282 - OS::TripleO::Services::Snmp
283 - OS::TripleO::Services::NovaCompute
284 - OS::TripleO::Services::NovaLibvirt
285 - OS::TripleO::Services::Kernel
286 - OS::TripleO::Services::ComputeNeutronCorePlugin
287 - OS::TripleO::Services::ComputeNeutronOvsAgent
288 - OS::TripleO::Services::ComputeCeilometerAgent
289 description: A list of service resources (configured in the Heat
290 resource_registry) which represent nested stacks
291 for each service that should get installed on the Compute Nodes.
292 type: comma_delimited_list
294 # Block storage specific parameters
298 BlockStorageExtraConfig:
301 BlockStorage specific configuration to inject into the cluster. Same
302 structure as ExtraConfig.
304 BlockStorageServices:
306 - OS::TripleO::Services::CinderVolume
307 - OS::TripleO::Services::Kernel
308 - OS::TripleO::Services::Ntp
309 - OS::TripleO::Services::Timezone
310 - OS::TripleO::Services::Snmp
311 description: A list of service resources (configured in the Heat
312 resource_registry) which represent nested stacks
313 for each service that should get installed on the BlockStorage nodes.
314 type: comma_delimited_list
316 # Object storage specific parameters
320 ObjectStorageExtraConfig:
323 ObjectStorage specific configuration to inject into the cluster. Same
324 structure as ExtraConfig.
326 ObjectStorageServices:
328 - OS::TripleO::Services::Kernel
329 - OS::TripleO::Services::Ntp
330 - OS::TripleO::Services::SwiftStorage
331 - OS::TripleO::Services::SwiftRingBuilder
332 - OS::TripleO::Services::Snmp
333 - OS::TripleO::Services::Timezone
334 description: A list of service resources (configured in the Heat
335 resource_registry) which represent nested stacks
336 for each service that should get installed on the ObjectStorage nodes.
337 Note this role currently only supports steps 2, 3 and 4 configuration.
338 type: comma_delimited_list
341 # Ceph storage specific parameters
345 CephStorageExtraConfig:
348 CephStorage specific configuration to inject into the cluster. Same
349 structure as ExtraConfig.
353 - OS::TripleO::Services::CephOSD
354 - OS::TripleO::Services::Kernel
355 - OS::TripleO::Services::Ntp
356 - OS::TripleO::Services::Timezone
357 description: A list of service resources (configured in the Heat
358 resource_registry) which represent nested stacks
359 for each service that should get installed on the CephStorage nodes.
360 type: comma_delimited_list
362 # Hostname format for each role
363 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
364 # and %stackname% is replaced with OS::stack_name in the template below.
365 # If you want to use the heat generated names, pass '' (empty string).
366 ControllerHostnameFormat:
368 description: Format for Controller node hostnames
369 default: '%stackname%-controller-%index%'
370 ComputeHostnameFormat:
372 description: Format for Compute node hostnames
373 default: '%stackname%-novacompute-%index%'
374 BlockStorageHostnameFormat:
376 description: Format for BlockStorage node hostnames
377 default: '%stackname%-blockstorage-%index%'
378 ObjectStorageHostnameFormat:
380 description: Format for SwiftStorage node hostnames
381 default: '%stackname%-objectstorage-%index%'
382 CephStorageHostnameFormat:
384 description: Format for CephStorage node hostnames
385 default: '%stackname%-cephstorage-%index%'
387 # Identifiers to trigger tasks on nodes
392 Setting to a previously unused value during stack-update will trigger
393 package update on all nodes
398 Setting this to a unique value will re-run any deployment tasks which
399 perform configuration on a Heat stack-update.
401 # If you want to remove a specific node from a resource group, you can pass
402 # the node name or id as a <Group>RemovalPolicies parameter, for example:
403 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
404 ControllerRemovalPolicies:
408 List of resources to be removed from ControllerResourceGroup when
409 doing an update which requires removal of specific resources.
410 ComputeRemovalPolicies:
414 List of resources to be removed from ComputeResourceGroup when
415 doing an update which requires removal of specific resources.
416 BlockStorageRemovalPolicies:
420 List of resources to be removed from BlockStorageResourceGroup when
421 doing an update which requires removal of specific resources.
422 ObjectStorageRemovalPolicies:
426 List of resources to be removed from ObjectStorageResourceGroup when
427 doing an update which requires removal of specific resources.
428 CephStorageRemovalPolicies:
432 List of resources to be removed from CephStorageResourceGroup when
433 doing an update which requires removal of specific resources.
437 description: Do not use deprecated params, they will be removed.
439 - controllerExtraConfig
444 HeatAuthEncryptionKey:
445 type: OS::Heat::RandomString
448 type: OS::Heat::RandomString
453 type: OS::Heat::RandomString
458 type: OS::TripleO::EndpointMap
460 CloudName: {get_param: CloudName}
461 CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
462 AodhApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
463 CinderApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
464 GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
465 GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
466 GnocchiApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
467 HeatApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
468 IronicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
469 KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
470 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
471 MysqlVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
472 MysqlNoBracketsVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
473 NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
474 NovaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
475 SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
476 SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
477 PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
479 ControllerServiceChain:
480 type: OS::TripleO::Services
482 Services: {get_param: ControllerServices}
483 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
486 type: OS::Heat::ResourceGroup
489 count: {get_param: ControllerCount}
490 removal_policies: {get_param: ControllerRemovalPolicies}
492 type: OS::TripleO::Controller
494 controllerExtraConfig: {get_param: controllerExtraConfig}
495 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
496 HorizonSecret: {get_resource: HorizonSecret}
497 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
498 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
499 PcsdPassword: {get_resource: PcsdPassword}
500 RabbitCookie: {get_attr: [RabbitCookie, value]}
501 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
502 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
503 ServiceNetMap: {get_param: ServiceNetMap}
504 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
505 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
508 template: {get_param: ControllerHostnameFormat}
510 '%stackname%': {get_param: 'OS::stack_name'}
512 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
513 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
517 type: OS::TripleO::Services
519 Services: {get_param: ComputeServices}
520 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
523 type: OS::Heat::ResourceGroup
526 count: {get_param: ComputeCount}
527 removal_policies: {get_param: ComputeRemovalPolicies}
529 type: OS::TripleO::Compute
531 AdminPassword: {get_param: AdminPassword}
532 CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
533 CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
534 Debug: {get_param: Debug}
535 ExtraConfig: {get_param: ExtraConfig}
536 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
537 KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
538 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
539 NeutronPassword: {get_param: NeutronPassword}
540 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
541 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
542 # L3 HA and Failover is not relevant for Computes, should be removed
543 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
544 NovaComputeDriver: {get_param: NovaComputeDriver}
545 NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
546 NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
547 NovaComputeLibvirtVifDriver: {get_param: NovaComputeLibvirtVifDriver}
548 NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
549 NovaIPv6: {get_param: NovaIPv6}
550 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
551 NovaPassword: {get_param: NovaPassword}
552 NovaOVSBridge: {get_param: NovaOVSBridge}
553 NovaSecurityGroupAPI: {get_param: NovaSecurityGroupAPI}
554 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
555 RabbitPassword: {get_param: RabbitPassword}
556 RabbitUserName: {get_param: RabbitUserName}
557 RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
558 RabbitClientPort: {get_param: RabbitClientPort}
559 ServiceNetMap: {get_param: ServiceNetMap}
560 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
561 UpdateIdentifier: {get_param: UpdateIdentifier}
564 template: {get_param: ComputeHostnameFormat}
566 '%stackname%': {get_param: 'OS::stack_name'}
567 CloudDomain: {get_param: CloudDomain}
568 ServerMetadata: {get_param: ServerMetadata}
570 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
571 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
573 BlockStorageServiceChain:
574 type: OS::TripleO::Services
576 Services: {get_param: BlockStorageServices}
577 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
580 type: OS::Heat::ResourceGroup
583 count: {get_param: BlockStorageCount}
584 removal_policies: {get_param: BlockStorageRemovalPolicies}
586 type: OS::TripleO::BlockStorage
588 UpdateIdentifier: {get_param: UpdateIdentifier}
591 template: {get_param: BlockStorageHostnameFormat}
593 '%stackname%': {get_param: 'OS::stack_name'}
594 ServiceNetMap: {get_param: ServiceNetMap}
595 ExtraConfig: {get_param: ExtraConfig}
596 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
597 CloudDomain: {get_param: CloudDomain}
598 ServerMetadata: {get_param: ServerMetadata}
600 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
601 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
603 ObjectStorageServiceChain:
604 type: OS::TripleO::Services
606 Services: {get_param: ObjectStorageServices}
607 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
610 type: OS::Heat::ResourceGroup
613 count: {get_param: ObjectStorageCount}
614 removal_policies: {get_param: ObjectStorageRemovalPolicies}
616 type: OS::TripleO::ObjectStorage
618 HashSuffix: {get_param: SwiftHashSuffix}
619 UpdateIdentifier: {get_param: UpdateIdentifier}
620 ServiceNetMap: {get_param: ServiceNetMap}
623 template: {get_param: ObjectStorageHostnameFormat}
625 '%stackname%': {get_param: 'OS::stack_name'}
626 ExtraConfig: {get_param: ExtraConfig}
627 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
628 CloudDomain: {get_param: CloudDomain}
629 ServerMetadata: {get_param: ServerMetadata}
631 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
632 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
634 CephStorageServiceChain:
635 type: OS::TripleO::Services
637 Services: {get_param: CephStorageServices}
638 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
641 type: OS::Heat::ResourceGroup
644 count: {get_param: CephStorageCount}
645 removal_policies: {get_param: CephStorageRemovalPolicies}
647 type: OS::TripleO::CephStorage
649 ServiceNetMap: {get_param: ServiceNetMap}
650 UpdateIdentifier: {get_param: UpdateIdentifier}
653 template: {get_param: CephStorageHostnameFormat}
655 '%stackname%': {get_param: 'OS::stack_name'}
656 ExtraConfig: {get_param: ExtraConfig}
657 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
658 CloudDomain: {get_param: CloudDomain}
659 ServerMetadata: {get_param: ServerMetadata}
661 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
662 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
665 type: OS::TripleO::Network::Ports::NetIpListMap
667 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
668 ExternalIpList: {get_attr: [Controller, external_ip_address]}
669 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
670 StorageIpList: {get_attr: [Controller, storage_ip_address]}
671 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
672 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
673 ManagementIpList: {get_attr: [Controller, management_ip_address]}
676 type: OS::TripleO::AllNodes::SoftwareConfig
678 compute_hosts: {get_attr: [Compute, hosts_entry]}
679 controller_hosts: {get_attr: [Controller, hosts_entry]}
680 controller_ips: {get_attr: [Controller, ip_address]}
681 block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
682 object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
683 ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
684 controller_names: {get_attr: [Controller, hostname]}
685 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
686 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
687 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
688 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
689 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
690 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
691 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
692 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
693 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
694 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
695 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
696 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
697 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
698 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
699 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
700 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
701 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
702 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
703 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
704 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
705 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
706 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
707 ceph_mon_node_names: {get_attr: [Controller, hostname]}
708 DeployIdentifier: {get_param: DeployIdentifier}
709 UpdateIdentifier: {get_param: UpdateIdentifier}
712 type: OS::Heat::RandomString
716 MysqlClusterUniquePart:
717 type: OS::Heat::RandomString
722 type: OS::Heat::RandomString
725 salt: {get_param: RabbitCookieSalt}
727 # creates the network architecture
729 type: OS::TripleO::Network
732 type: OS::Neutron::Port
735 name: control_virtual_ip
736 network: {get_param: NeutronControlPlaneID}
737 fixed_ips: {get_param: ControlFixedIPs}
738 replacement_policy: AUTO
742 type: OS::TripleO::Network::Ports::RedisVipPort
744 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
745 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
746 PortName: redis_virtual_ip
747 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
750 # The public VIP is on the External net, falls back to ctlplane
753 type: OS::TripleO::Network::Ports::ExternalVipPort
755 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
756 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
757 PortName: public_virtual_ip
758 FixedIPs: {get_param: PublicVirtualFixedIPs}
760 InternalApiVirtualIP:
762 type: OS::TripleO::Network::Ports::InternalApiVipPort
764 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
765 PortName: internal_api_virtual_ip
766 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
770 type: OS::TripleO::Network::Ports::StorageVipPort
772 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
773 PortName: storage_virtual_ip
774 FixedIPs: {get_param: StorageVirtualFixedIPs}
776 StorageMgmtVirtualIP:
778 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
780 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
781 PortName: storage_management_virtual_ip
782 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
785 type: OS::TripleO::Network::Ports::NetVipMap
787 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
788 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
789 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
790 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
791 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
792 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
793 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
794 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
795 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
796 # No tenant or management VIP required
799 type: OS::TripleO::VipConfig
802 type: OS::Heat::StructuredDeployments
805 config: {get_resource: VipConfig}
806 servers: {get_attr: [Controller, attributes, nova_server_resource]}
808 # service VIP mappings
809 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
810 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
811 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
812 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
813 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
814 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
815 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
816 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
817 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
818 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
819 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
820 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
821 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
822 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
823 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
824 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
825 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
826 # direct configuration of Virtual IPs for each network
827 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
828 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
829 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
830 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
831 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
832 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
833 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
835 ControllerSwiftDeployment:
836 type: OS::Heat::StructuredDeployments
838 name: ControllerSwiftDeployment
839 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
840 servers: {get_attr: [Controller, attributes, nova_server_resource]}
842 ObjectStorageSwiftDeployment:
843 type: OS::Heat::StructuredDeployments
845 name: ObjectStorageSwiftDeployment
846 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
847 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
849 SwiftDevicesAndProxyConfig:
850 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
852 controller_swift_devices: {get_attr: [Controller, swift_device]}
853 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
854 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
856 ControllerAllNodesDeployment:
857 type: OS::Heat::StructuredDeployments
859 name: ControllerAllNodesDeployment
860 config: {get_attr: [allNodesConfig, config_id]}
861 servers: {get_attr: [Controller, attributes, nova_server_resource]}
863 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
864 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
866 ComputeAllNodesDeployment:
867 type: OS::Heat::StructuredDeployments
869 name: ComputeAllNodesDeployment
870 config: {get_attr: [allNodesConfig, config_id]}
871 servers: {get_attr: [Compute, attributes, nova_server_resource]}
873 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
874 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
876 BlockStorageAllNodesDeployment:
877 type: OS::Heat::StructuredDeployments
879 name: BlockStorageAllNodesDeployment
880 config: {get_attr: [allNodesConfig, config_id]}
881 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
883 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
884 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
886 ObjectStorageAllNodesDeployment:
887 type: OS::Heat::StructuredDeployments
889 name: ObjectStorageAllNodesDeployment
890 config: {get_attr: [allNodesConfig, config_id]}
891 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
893 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
894 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
896 CephStorageAllNodesDeployment:
897 type: OS::Heat::StructuredDeployments
899 name: CephStorageAllNodesDeployment
900 config: {get_attr: [allNodesConfig, config_id]}
901 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
903 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
904 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
906 # All Nodes Validations
907 AllNodesValidationConfig:
908 type: OS::TripleO::AllNodes::Validation
913 - - {get_attr: [Controller, resource.0.external_ip_address]}
914 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
915 - {get_attr: [Controller, resource.0.storage_ip_address]}
916 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
917 - {get_attr: [Controller, resource.0.tenant_ip_address]}
919 ControllerAllNodesValidationDeployment:
920 type: OS::Heat::StructuredDeployments
921 depends_on: ControllerAllNodesDeployment
923 name: ControllerAllNodesValidationDeployment
924 config: {get_resource: AllNodesValidationConfig}
925 servers: {get_attr: [Controller, attributes, nova_server_resource]}
927 ComputeAllNodesValidationDeployment:
928 type: OS::Heat::StructuredDeployments
929 depends_on: ComputeAllNodesDeployment
931 name: ComputeAllNodesValidationDeployment
932 config: {get_resource: AllNodesValidationConfig}
933 servers: {get_attr: [Compute, attributes, nova_server_resource]}
935 BlockStorageAllNodesValidationDeployment:
936 type: OS::Heat::StructuredDeployments
937 depends_on: BlockStorageAllNodesDeployment
939 name: BlockStorageAllNodesValidationDeployment
940 config: {get_resource: AllNodesValidationConfig}
941 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
943 ObjectStorageAllNodesValidationDeployment:
944 type: OS::Heat::StructuredDeployments
945 depends_on: ObjectStorageAllNodesDeployment
947 name: ObjectStorageAllNodesValidationDeployment
948 config: {get_resource: AllNodesValidationConfig}
949 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
951 CephStorageAllNodesValidationDeployment:
952 type: OS::Heat::StructuredDeployments
953 depends_on: CephStorageAllNodesDeployment
955 name: CephStorageAllNodesValidationDeployment
956 config: {get_resource: AllNodesValidationConfig}
957 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
960 type: OS::TripleO::Tasks::UpdateWorkflow
962 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
963 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
964 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
965 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
966 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
968 deploy_identifier: {get_param: DeployIdentifier}
969 update_identifier: {get_param: UpdateIdentifier}
971 # Optional ExtraConfig for all nodes - all roles are passed in here, but
972 # the nested template may configure each role differently (or not at all)
974 type: OS::TripleO::AllNodesExtraConfig
977 - ComputeAllNodesValidationDeployment
978 - BlockStorageAllNodesValidationDeployment
979 - ObjectStorageAllNodesValidationDeployment
980 - CephStorageAllNodesValidationDeployment
981 - ControllerAllNodesValidationDeployment
983 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
984 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
985 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
986 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
987 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
989 # Nested stack deployment runs after all other controller deployments
990 ControllerNodesPostDeployment:
991 type: OS::TripleO::ControllerPostDeployment
992 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
994 servers: {get_attr: [Controller, attributes, nova_server_resource]}
995 RoleData: {get_attr: [ControllerServiceChain, role_data]}
997 ComputeNodesPostDeployment:
998 type: OS::TripleO::ComputePostDeployment
999 depends_on: [ComputeAllNodesDeployment]
1001 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1002 RoleData: {get_attr: [ComputeServiceChain, role_data]}
1004 ObjectStorageNodesPostDeployment:
1005 type: OS::TripleO::ObjectStoragePostDeployment
1006 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1008 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1009 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
1011 BlockStorageNodesPostDeployment:
1012 type: OS::TripleO::BlockStoragePostDeployment
1013 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1015 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1016 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
1018 CephStorageNodesPostDeployment:
1019 type: OS::TripleO::CephStoragePostDeployment
1020 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
1022 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1023 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
1027 description: URL for the Overcloud Keystone service
1028 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
1030 description: Keystone Admin VIP endpoint
1031 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1033 description: Controller VIP for public API endpoints
1034 value: {get_attr: [VipMap, net_ip_map, external]}
1036 description: VIP for Aodh API internal endpoint
1037 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1038 CeilometerInternalVip:
1039 description: VIP for Ceilometer API internal endpoint
1040 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1042 description: VIP for Cinder API internal endpoint
1043 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1045 description: VIP for Glance API internal endpoint
1046 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1048 description: VIP for Gnocchi API internal endpoint
1049 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1051 description: VIP for Heat API internal endpoint
1052 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1054 description: VIP for Ironic API internal endpoint
1055 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
1056 KeystoneInternalVip:
1057 description: VIP for Keystone API internal endpoint
1058 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1060 description: VIP for Neutron API internal endpoint
1061 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1063 description: VIP for Nova API internal endpoint
1064 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1066 description: VIP for Sahara API internal endpoint
1067 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1069 description: VIP for Swift Proxy internal endpoint
1070 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1073 Mapping of the resources with the needed info for their endpoints.
1074 This includes the protocol used, the IP, port and also a full
1075 representation of the URI.
1076 value: {get_attr: [EndpointMap, endpoint_map]}
1079 The content that should be appended to your /etc/hosts if you want to get
1080 hostname-based access to the deployed nodes (useful for testing without
1082 value: {get_attr: [allNodesConfig, hosts_entries]}