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)
17 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
21 description: Should be used for arbitrary ips.
23 InternalApiVirtualFixedIPs:
26 Control the IP allocation for the InternalApiVirtualInterface port. E.g.
27 [{'ip_address':'1.2.3.4'}]
29 NeutronControlPlaneID:
32 description: Neutron ID or name for ctlplane network.
33 NeutronPublicInterface:
35 description: What interface to bridge onto br-ex for network nodes.
37 PublicVirtualFixedIPs:
40 Control the IP allocation for the PublicVirtualInterface port. E.g.
41 [{'ip_address':'1.2.3.4'}]
46 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
47 StorageVirtualFixedIPs:
50 Control the IP allocation for the StorageVirtualInterface port. E.g.
51 [{'ip_address':'1.2.3.4'}]
53 StorageMgmtVirtualFixedIPs:
56 Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
57 [{'ip_address':'1.2.3.4'}]
60 default: 'localdomain'
63 The DNS domain used for the hosts. This should match the dhcp_domain
64 configured in the Undercloud neutron. Defaults to localdomain.
68 Extra properties or metadata passed to Nova for the created nodes in
69 the overcloud. It's accessible via the Nova metadata API.
72 # Controller-specific params
76 controllerExtraConfig:
79 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
84 Additional configuration to inject into the cluster. The format required
85 may be implementation specific, e.g puppet hieradata. Any role specific
86 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
89 description: A random string to be used as a salt when hashing to determine mappings in the ring.
94 # Compute-specific params
98 HypervisorNeutronPhysicalBridge:
101 An OVS bridge to create on each hypervisor. This defaults to br-ex the
102 same as the control plane nodes, as we have a uniform configuration of
103 the openvswitch agent. Typically should not need to be changed.
105 HypervisorNeutronPublicInterface:
107 description: What interface to add to the HypervisorNeutronPhysicalBridge.
112 - OS::TripleO::Services::CephMon
113 - OS::TripleO::Services::CephExternal
114 - OS::TripleO::Services::CinderApi
115 - OS::TripleO::Services::CinderBackup
116 - OS::TripleO::Services::CinderScheduler
117 - OS::TripleO::Services::CinderVolume
118 - OS::TripleO::Services::Core
119 - OS::TripleO::Services::Kernel
120 - OS::TripleO::Services::Keystone
121 - OS::TripleO::Services::GlanceApi
122 - OS::TripleO::Services::GlanceRegistry
123 - OS::TripleO::Services::HeatApi
124 - OS::TripleO::Services::HeatApiCfn
125 - OS::TripleO::Services::HeatApiCloudwatch
126 - OS::TripleO::Services::HeatEngine
127 - OS::TripleO::Services::MySQL
128 - OS::TripleO::Services::NeutronDhcpAgent
129 - OS::TripleO::Services::NeutronL3Agent
130 - OS::TripleO::Services::NeutronMetadataAgent
131 - OS::TripleO::Services::NeutronApi
132 - OS::TripleO::Services::NeutronCorePlugin
133 - OS::TripleO::Services::NeutronOvsAgent
134 - OS::TripleO::Services::RabbitMQ
135 - OS::TripleO::Services::HAproxy
136 - OS::TripleO::Services::Keepalived
137 - OS::TripleO::Services::Memcached
138 - OS::TripleO::Services::Pacemaker
139 - OS::TripleO::Services::Redis
140 - OS::TripleO::Services::NovaConductor
141 - OS::TripleO::Services::MongoDb
142 - OS::TripleO::Services::NovaApi
143 - OS::TripleO::Services::NovaScheduler
144 - OS::TripleO::Services::NovaConsoleauth
145 - OS::TripleO::Services::NovaVncproxy
146 - OS::TripleO::Services::Ntp
147 - OS::TripleO::Services::SwiftProxy
148 - OS::TripleO::Services::SwiftStorage
149 - OS::TripleO::Services::SwiftRingBuilder
150 - OS::TripleO::Services::Snmp
151 - OS::TripleO::Services::Timezone
152 - OS::TripleO::Services::CeilometerApi
153 - OS::TripleO::Services::CeilometerCollector
154 - OS::TripleO::Services::CeilometerExpirer
155 - OS::TripleO::Services::CeilometerAgentCentral
156 - OS::TripleO::Services::CeilometerAgentNotification
157 - OS::TripleO::Services::Horizon
158 - OS::TripleO::Services::GnocchiApi
159 - OS::TripleO::Services::GnocchiMetricd
160 - OS::TripleO::Services::GnocchiStatsd
161 - OS::Tripleo::Services::ManilaApi
162 - OS::Tripleo::Services::ManilaScheduler
163 - OS::Tripleo::Services::ManilaShare
164 - OS::TripleO::Services::AodhApi
165 - OS::TripleO::Services::AodhEvaluator
166 - OS::TripleO::Services::AodhNotifier
167 - OS::TripleO::Services::AodhListener
168 - OS::TripleO::Services::SaharaApi
169 - OS::TripleO::Services::SaharaEngine
170 - OS::TripleO::Services::IronicApi
171 - OS::TripleO::Services::IronicConductor
172 - OS::TripleO::Services::NovaIronic
173 - OS::TripleO::Services::TripleoPackages
174 - OS::TripleO::Services::TripleoFirewall
175 description: A list of service resources (configured in the Heat
176 resource_registry) which represent nested stacks
177 for each service that should get installed on the Controllers.
178 type: comma_delimited_list
182 - OS::TripleO::Services::CephClient
183 - OS::TripleO::Services::CephExternal
184 - OS::TripleO::Services::Timezone
185 - OS::TripleO::Services::Ntp
186 - OS::TripleO::Services::Snmp
187 - OS::TripleO::Services::NovaCompute
188 - OS::TripleO::Services::NovaLibvirt
189 - OS::TripleO::Services::Kernel
190 - OS::TripleO::Services::ComputeNeutronCorePlugin
191 - OS::TripleO::Services::ComputeNeutronOvsAgent
192 - OS::TripleO::Services::ComputeCeilometerAgent
193 - OS::TripleO::Services::ComputeNeutronL3Agent
194 - OS::TripleO::Services::ComputeNeutronMetadataAgent
195 - OS::TripleO::Services::TripleoPackages
196 - OS::TripleO::Services::TripleoFirewall
197 - OS::TripleO::Services::NeutronSriovAgent
198 description: A list of service resources (configured in the Heat
199 resource_registry) which represent nested stacks
200 for each service that should get installed on the Compute Nodes.
201 type: comma_delimited_list
203 # Block storage specific parameters
207 BlockStorageExtraConfig:
210 BlockStorage specific configuration to inject into the cluster. Same
211 structure as ExtraConfig.
213 BlockStorageServices:
215 - OS::TripleO::Services::CinderVolume
216 - OS::TripleO::Services::Kernel
217 - OS::TripleO::Services::Ntp
218 - OS::TripleO::Services::Timezone
219 - OS::TripleO::Services::Snmp
220 - OS::TripleO::Services::TripleoPackages
221 - OS::TripleO::Services::TripleoFirewall
222 description: A list of service resources (configured in the Heat
223 resource_registry) which represent nested stacks
224 for each service that should get installed on the BlockStorage nodes.
225 type: comma_delimited_list
227 # Object storage specific parameters
231 ObjectStorageExtraConfig:
234 ObjectStorage specific configuration to inject into the cluster. Same
235 structure as ExtraConfig.
237 ObjectStorageServices:
239 - OS::TripleO::Services::Kernel
240 - OS::TripleO::Services::Ntp
241 - OS::TripleO::Services::SwiftStorage
242 - OS::TripleO::Services::SwiftRingBuilder
243 - OS::TripleO::Services::Snmp
244 - OS::TripleO::Services::Timezone
245 - OS::TripleO::Services::TripleoPackages
246 - OS::TripleO::Services::TripleoFirewall
247 description: A list of service resources (configured in the Heat
248 resource_registry) which represent nested stacks
249 for each service that should get installed on the ObjectStorage nodes.
250 Note this role currently only supports steps 2, 3 and 4 configuration.
251 type: comma_delimited_list
254 # Ceph storage specific parameters
258 CephStorageExtraConfig:
261 CephStorage specific configuration to inject into the cluster. Same
262 structure as ExtraConfig.
266 - OS::TripleO::Services::CephOSD
267 - OS::TripleO::Services::Kernel
268 - OS::TripleO::Services::Ntp
269 - OS::TripleO::Services::Timezone
270 - OS::TripleO::Services::TripleoPackages
271 - OS::TripleO::Services::TripleoFirewall
272 description: A list of service resources (configured in the Heat
273 resource_registry) which represent nested stacks
274 for each service that should get installed on the CephStorage nodes.
275 type: comma_delimited_list
277 # Hostname format for each role
278 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
279 # and %stackname% is replaced with OS::stack_name in the template below.
280 # If you want to use the heat generated names, pass '' (empty string).
281 ControllerHostnameFormat:
283 description: Format for Controller node hostnames
284 default: '%stackname%-controller-%index%'
285 ComputeHostnameFormat:
287 description: Format for Compute node hostnames
288 default: '%stackname%-novacompute-%index%'
289 BlockStorageHostnameFormat:
291 description: Format for BlockStorage node hostnames
292 default: '%stackname%-blockstorage-%index%'
293 ObjectStorageHostnameFormat:
295 description: Format for SwiftStorage node hostnames
296 default: '%stackname%-objectstorage-%index%'
297 CephStorageHostnameFormat:
299 description: Format for CephStorage node hostnames
300 default: '%stackname%-cephstorage-%index%'
302 # Identifiers to trigger tasks on nodes
307 Setting to a previously unused value during stack-update will trigger
308 package update on all nodes
313 Setting this to a unique value will re-run any deployment tasks which
314 perform configuration on a Heat stack-update.
316 # If you want to remove a specific node from a resource group, you can pass
317 # the node name or id as a <Group>RemovalPolicies parameter, for example:
318 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
319 ControllerRemovalPolicies:
323 List of resources to be removed from ControllerResourceGroup when
324 doing an update which requires removal of specific resources.
325 ComputeRemovalPolicies:
329 List of resources to be removed from ComputeResourceGroup when
330 doing an update which requires removal of specific resources.
331 BlockStorageRemovalPolicies:
335 List of resources to be removed from BlockStorageResourceGroup when
336 doing an update which requires removal of specific resources.
337 ObjectStorageRemovalPolicies:
341 List of resources to be removed from ObjectStorageResourceGroup when
342 doing an update which requires removal of specific resources.
343 CephStorageRemovalPolicies:
347 List of resources to be removed from CephStorageResourceGroup when
348 doing an update which requires removal of specific resources.
352 description: Do not use deprecated params, they will be removed.
354 - controllerExtraConfig
359 HeatAuthEncryptionKey:
360 type: OS::Heat::RandomString
363 type: OS::Heat::RandomString
368 type: OS::Heat::RandomString
373 type: OS::TripleO::ServiceNetMap
376 type: OS::TripleO::EndpointMap
378 CloudName: {get_param: CloudName}
379 NetIpMap: {get_attr: [VipMap, net_ip_map]}
380 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
382 ControllerServiceChain:
383 type: OS::TripleO::Services
385 Services: {get_param: ControllerServices}
386 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
387 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
388 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
391 type: OS::Heat::ResourceGroup
394 count: {get_param: ControllerCount}
395 removal_policies: {get_param: ControllerRemovalPolicies}
397 type: OS::TripleO::Controller
399 CloudDomain: {get_param: CloudDomain}
400 controllerExtraConfig: {get_param: controllerExtraConfig}
401 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
402 HorizonSecret: {get_resource: HorizonSecret}
403 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
404 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
405 PcsdPassword: {get_resource: PcsdPassword}
406 RabbitCookie: {get_attr: [RabbitCookie, value]}
407 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
408 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
409 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
410 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
411 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
414 template: {get_param: ControllerHostnameFormat}
416 '%stackname%': {get_param: 'OS::stack_name'}
418 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
419 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
422 type: OS::TripleO::Services
424 Services: {get_param: ComputeServices}
425 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
426 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
427 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
430 type: OS::Heat::ResourceGroup
433 count: {get_param: ComputeCount}
434 removal_policies: {get_param: ComputeRemovalPolicies}
436 type: OS::TripleO::Compute
438 CloudDomain: {get_param: CloudDomain}
439 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
440 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
441 # L3 HA and Failover is not relevant for Computes, should be removed
442 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
443 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
444 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
445 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
448 template: {get_param: ComputeHostnameFormat}
450 '%stackname%': {get_param: 'OS::stack_name'}
452 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
453 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
455 BlockStorageServiceChain:
456 type: OS::TripleO::Services
458 Services: {get_param: BlockStorageServices}
459 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
460 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
461 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
464 type: OS::Heat::ResourceGroup
467 count: {get_param: BlockStorageCount}
468 removal_policies: {get_param: BlockStorageRemovalPolicies}
470 type: OS::TripleO::BlockStorage
472 UpdateIdentifier: {get_param: UpdateIdentifier}
475 template: {get_param: BlockStorageHostnameFormat}
477 '%stackname%': {get_param: 'OS::stack_name'}
478 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
479 ExtraConfig: {get_param: ExtraConfig}
480 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
481 CloudDomain: {get_param: CloudDomain}
482 ServerMetadata: {get_param: ServerMetadata}
484 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
485 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
487 ObjectStorageServiceChain:
488 type: OS::TripleO::Services
490 Services: {get_param: ObjectStorageServices}
491 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
492 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
493 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
496 type: OS::Heat::ResourceGroup
499 count: {get_param: ObjectStorageCount}
500 removal_policies: {get_param: ObjectStorageRemovalPolicies}
502 type: OS::TripleO::ObjectStorage
504 HashSuffix: {get_param: SwiftHashSuffix}
505 UpdateIdentifier: {get_param: UpdateIdentifier}
506 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
509 template: {get_param: ObjectStorageHostnameFormat}
511 '%stackname%': {get_param: 'OS::stack_name'}
512 ExtraConfig: {get_param: ExtraConfig}
513 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
514 CloudDomain: {get_param: CloudDomain}
515 ServerMetadata: {get_param: ServerMetadata}
517 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
518 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
520 CephStorageServiceChain:
521 type: OS::TripleO::Services
523 Services: {get_param: CephStorageServices}
524 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
525 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
526 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
529 type: OS::Heat::ResourceGroup
532 count: {get_param: CephStorageCount}
533 removal_policies: {get_param: CephStorageRemovalPolicies}
535 type: OS::TripleO::CephStorage
537 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
538 UpdateIdentifier: {get_param: UpdateIdentifier}
541 template: {get_param: CephStorageHostnameFormat}
543 '%stackname%': {get_param: 'OS::stack_name'}
544 ExtraConfig: {get_param: ExtraConfig}
545 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
546 CloudDomain: {get_param: CloudDomain}
547 ServerMetadata: {get_param: ServerMetadata}
549 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
550 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
553 type: OS::TripleO::Network::Ports::NetIpListMap
555 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
556 ExternalIpList: {get_attr: [Controller, external_ip_address]}
557 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
558 StorageIpList: {get_attr: [Controller, storage_ip_address]}
559 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
560 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
561 ManagementIpList: {get_attr: [Controller, management_ip_address]}
564 type: OS::TripleO::AllNodes::SoftwareConfig
569 - {get_attr: [Compute, hosts_entry]}
572 - {get_attr: [Controller, hosts_entry]}
575 - {get_attr: [BlockStorage, hosts_entry]}
578 - {get_attr: [ObjectStorage, hosts_entry]}
581 - {get_attr: [CephStorage, hosts_entry]}
582 controller_ips: {get_attr: [Controller, ip_address]}
583 controller_names: {get_attr: [Controller, hostname]}
584 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
585 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
586 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
587 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
588 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
589 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
590 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
591 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
592 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
593 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
594 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
595 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
596 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
597 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
598 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
599 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
600 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
601 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
602 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
603 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
604 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
605 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
606 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
607 ceph_mon_node_names: {get_attr: [Controller, hostname]}
608 DeployIdentifier: {get_param: DeployIdentifier}
609 UpdateIdentifier: {get_param: UpdateIdentifier}
612 type: OS::Heat::RandomString
616 MysqlClusterUniquePart:
617 type: OS::Heat::RandomString
622 type: OS::Heat::RandomString
625 salt: {get_param: RabbitCookieSalt}
628 type: OS::TripleO::DefaultPasswords
630 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
631 DefaultMysqlClusterPassword: {get_attr: [MysqlClusterUniquePart, value]}
632 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
633 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
634 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
635 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
637 # creates the network architecture
639 type: OS::TripleO::Network
642 type: OS::Neutron::Port
645 name: control_virtual_ip
646 network: {get_param: NeutronControlPlaneID}
647 fixed_ips: {get_param: ControlFixedIPs}
648 replacement_policy: AUTO
652 type: OS::TripleO::Network::Ports::RedisVipPort
654 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
655 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
656 PortName: redis_virtual_ip
657 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
660 # The public VIP is on the External net, falls back to ctlplane
663 type: OS::TripleO::Network::Ports::ExternalVipPort
665 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
666 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
667 PortName: public_virtual_ip
668 FixedIPs: {get_param: PublicVirtualFixedIPs}
670 InternalApiVirtualIP:
672 type: OS::TripleO::Network::Ports::InternalApiVipPort
674 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
675 PortName: internal_api_virtual_ip
676 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
680 type: OS::TripleO::Network::Ports::StorageVipPort
682 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
683 PortName: storage_virtual_ip
684 FixedIPs: {get_param: StorageVirtualFixedIPs}
686 StorageMgmtVirtualIP:
688 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
690 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
691 PortName: storage_management_virtual_ip
692 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
695 type: OS::TripleO::Network::Ports::NetVipMap
697 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
698 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
699 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
700 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
701 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
702 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
703 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
704 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
705 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
706 # No tenant or management VIP required
709 type: OS::TripleO::VipConfig
712 type: OS::Heat::StructuredDeployments
715 config: {get_resource: VipConfig}
716 servers: {get_attr: [Controller, attributes, nova_server_resource]}
718 # service VIP mappings
719 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
720 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
721 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
722 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
723 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
724 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
725 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
726 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
727 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
728 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
729 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
730 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
731 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
732 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
733 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
734 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
735 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
736 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
737 # direct configuration of Virtual IPs for each network
738 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
739 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
740 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
741 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
742 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
743 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
744 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
746 ControllerSwiftDeployment:
747 type: OS::Heat::StructuredDeployments
749 name: ControllerSwiftDeployment
750 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
751 servers: {get_attr: [Controller, attributes, nova_server_resource]}
753 ObjectStorageSwiftDeployment:
754 type: OS::Heat::StructuredDeployments
756 name: ObjectStorageSwiftDeployment
757 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
758 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
760 SwiftDevicesAndProxyConfig:
761 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
763 controller_swift_devices: {get_attr: [Controller, swift_device]}
764 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
765 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
767 ControllerAllNodesDeployment:
768 type: OS::Heat::StructuredDeployments
770 name: ControllerAllNodesDeployment
771 config: {get_attr: [allNodesConfig, config_id]}
772 servers: {get_attr: [Controller, attributes, nova_server_resource]}
774 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
775 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
777 ComputeAllNodesDeployment:
778 type: OS::Heat::StructuredDeployments
780 name: ComputeAllNodesDeployment
781 config: {get_attr: [allNodesConfig, config_id]}
782 servers: {get_attr: [Compute, attributes, nova_server_resource]}
784 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
785 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
787 BlockStorageAllNodesDeployment:
788 type: OS::Heat::StructuredDeployments
790 name: BlockStorageAllNodesDeployment
791 config: {get_attr: [allNodesConfig, config_id]}
792 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
794 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
795 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
797 ObjectStorageAllNodesDeployment:
798 type: OS::Heat::StructuredDeployments
800 name: ObjectStorageAllNodesDeployment
801 config: {get_attr: [allNodesConfig, config_id]}
802 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
804 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
805 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
807 CephStorageAllNodesDeployment:
808 type: OS::Heat::StructuredDeployments
810 name: CephStorageAllNodesDeployment
811 config: {get_attr: [allNodesConfig, config_id]}
812 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
814 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
815 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
817 # All Nodes Validations
818 AllNodesValidationConfig:
819 type: OS::TripleO::AllNodes::Validation
824 - - {get_attr: [Controller, resource.0.external_ip_address]}
825 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
826 - {get_attr: [Controller, resource.0.storage_ip_address]}
827 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
828 - {get_attr: [Controller, resource.0.tenant_ip_address]}
829 - {get_attr: [Controller, resource.0.management_ip_address]}
831 ControllerAllNodesValidationDeployment:
832 type: OS::Heat::StructuredDeployments
833 depends_on: ControllerAllNodesDeployment
835 name: ControllerAllNodesValidationDeployment
836 config: {get_resource: AllNodesValidationConfig}
837 servers: {get_attr: [Controller, attributes, nova_server_resource]}
839 ComputeAllNodesValidationDeployment:
840 type: OS::Heat::StructuredDeployments
841 depends_on: ComputeAllNodesDeployment
843 name: ComputeAllNodesValidationDeployment
844 config: {get_resource: AllNodesValidationConfig}
845 servers: {get_attr: [Compute, attributes, nova_server_resource]}
847 BlockStorageAllNodesValidationDeployment:
848 type: OS::Heat::StructuredDeployments
849 depends_on: BlockStorageAllNodesDeployment
851 name: BlockStorageAllNodesValidationDeployment
852 config: {get_resource: AllNodesValidationConfig}
853 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
855 ObjectStorageAllNodesValidationDeployment:
856 type: OS::Heat::StructuredDeployments
857 depends_on: ObjectStorageAllNodesDeployment
859 name: ObjectStorageAllNodesValidationDeployment
860 config: {get_resource: AllNodesValidationConfig}
861 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
863 CephStorageAllNodesValidationDeployment:
864 type: OS::Heat::StructuredDeployments
865 depends_on: CephStorageAllNodesDeployment
867 name: CephStorageAllNodesValidationDeployment
868 config: {get_resource: AllNodesValidationConfig}
869 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
872 type: OS::TripleO::Tasks::UpdateWorkflow
874 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
875 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
876 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
877 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
878 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
880 deploy_identifier: {get_param: DeployIdentifier}
881 update_identifier: {get_param: UpdateIdentifier}
883 # Optional ExtraConfig for all nodes - all roles are passed in here, but
884 # the nested template may configure each role differently (or not at all)
886 type: OS::TripleO::AllNodesExtraConfig
889 - ComputeAllNodesValidationDeployment
890 - BlockStorageAllNodesValidationDeployment
891 - ObjectStorageAllNodesValidationDeployment
892 - CephStorageAllNodesValidationDeployment
893 - ControllerAllNodesValidationDeployment
895 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
896 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
897 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
898 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
899 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
901 # Nested stack deployment runs after all other controller deployments
902 ControllerNodesPostDeployment:
903 type: OS::TripleO::ControllerPostDeployment
904 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
906 servers: {get_attr: [Controller, attributes, nova_server_resource]}
907 RoleData: {get_attr: [ControllerServiceChain, role_data]}
909 ComputeNodesPostDeployment:
910 type: OS::TripleO::ComputePostDeployment
911 depends_on: [ComputeAllNodesDeployment]
913 servers: {get_attr: [Compute, attributes, nova_server_resource]}
914 RoleData: {get_attr: [ComputeServiceChain, role_data]}
916 ObjectStorageNodesPostDeployment:
917 type: OS::TripleO::ObjectStoragePostDeployment
918 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
920 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
921 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
923 BlockStorageNodesPostDeployment:
924 type: OS::TripleO::BlockStoragePostDeployment
925 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
927 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
928 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
930 CephStorageNodesPostDeployment:
931 type: OS::TripleO::CephStoragePostDeployment
932 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
934 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
935 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
939 description: URL for the Overcloud Keystone service
940 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
942 description: Keystone Admin VIP endpoint
943 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
945 description: Controller VIP for public API endpoints
946 value: {get_attr: [VipMap, net_ip_map, external]}
948 description: VIP for Aodh API internal endpoint
949 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
950 CeilometerInternalVip:
951 description: VIP for Ceilometer API internal endpoint
952 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
954 description: VIP for Cinder API internal endpoint
955 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
957 description: VIP for Glance API internal endpoint
958 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
960 description: VIP for Gnocchi API internal endpoint
961 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
963 description: VIP for Heat API internal endpoint
964 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
966 description: VIP for Ironic API internal endpoint
967 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
969 description: VIP for Keystone API internal endpoint
970 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
972 description: VIP for Manila API internal endpoint
973 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
975 description: VIP for Neutron API internal endpoint
976 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
978 description: VIP for Nova API internal endpoint
979 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
981 description: VIP for Sahara API internal endpoint
982 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
984 description: VIP for Swift Proxy internal endpoint
985 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
988 Mapping of the resources with the needed info for their endpoints.
989 This includes the protocol used, the IP, port and also a full
990 representation of the URI.
991 value: {get_attr: [EndpointMap, endpoint_map]}
994 The content that should be appended to your /etc/hosts if you want to get
995 hostname-based access to the deployed nodes (useful for testing without
997 value: {get_attr: [allNodesConfig, hosts_entries]}
999 description: The services enabled on each role
1001 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
1002 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
1003 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
1004 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
1005 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}