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.
111 NeutronTenantNetwork: tenant
112 CeilometerApiNetwork: internal_api
113 AodhApiNetwork: internal_api
114 GnocchiApiNetwork: internal_api
115 MongoDbNetwork: internal_api
116 CinderApiNetwork: internal_api
117 CinderIscsiNetwork: storage
118 GlanceApiNetwork: storage
119 GlanceRegistryNetwork: internal_api
120 IronicApiNetwork: internal_api
121 KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
122 KeystonePublicApiNetwork: internal_api
123 ManilaApiNetwork: internal_api
124 NeutronApiNetwork: internal_api
125 HeatApiNetwork: internal_api
126 NovaApiNetwork: internal_api
127 NovaMetadataNetwork: internal_api
128 NovaVncProxyNetwork: internal_api
129 SwiftMgmtNetwork: storage_mgmt
130 SwiftProxyNetwork: storage
131 SaharaApiNetwork: internal_api
132 HorizonNetwork: internal_api
133 MemcachedNetwork: internal_api
134 RabbitMqNetwork: internal_api
135 RedisNetwork: internal_api
136 MysqlNetwork: internal_api
137 CephClusterNetwork: storage_mgmt
138 CephPublicNetwork: storage
139 ControllerHostnameResolveNetwork: internal_api
140 ComputeHostnameResolveNetwork: internal_api
141 BlockStorageHostnameResolveNetwork: internal_api
142 ObjectStorageHostnameResolveNetwork: internal_api
143 CephStorageHostnameResolveNetwork: storage
144 PublicNetwork: external
145 description: Mapping of service_name -> network name. Typically set
146 via parameter_defaults in the resource registry.
151 - OS::TripleO::Services::CephMon
152 - OS::TripleO::Services::CephExternal
153 - OS::TripleO::Services::CinderApi
154 - OS::TripleO::Services::CinderScheduler
155 - OS::TripleO::Services::CinderVolume
156 - OS::TripleO::Services::Core
157 - OS::TripleO::Services::Kernel
158 - OS::TripleO::Services::Keystone
159 - OS::TripleO::Services::GlanceApi
160 - OS::TripleO::Services::GlanceRegistry
161 - OS::TripleO::Services::HeatApi
162 - OS::TripleO::Services::HeatApiCfn
163 - OS::TripleO::Services::HeatApiCloudwatch
164 - OS::TripleO::Services::HeatEngine
165 - OS::TripleO::Services::MySQL
166 - OS::TripleO::Services::NeutronDhcpAgent
167 - OS::TripleO::Services::NeutronL3Agent
168 - OS::TripleO::Services::NeutronMetadataAgent
169 - OS::TripleO::Services::NeutronServer
170 - OS::TripleO::Services::NeutronCorePlugin
171 - OS::TripleO::Services::NeutronOvsAgent
172 - OS::TripleO::Services::RabbitMQ
173 - OS::TripleO::Services::HAproxy
174 - OS::TripleO::Services::Keepalived
175 - OS::TripleO::Services::Memcached
176 - OS::TripleO::Services::Pacemaker
177 - OS::TripleO::Services::Redis
178 - OS::TripleO::Services::NovaConductor
179 - OS::TripleO::Services::MongoDb
180 - OS::TripleO::Services::NovaApi
181 - OS::TripleO::Services::NovaScheduler
182 - OS::TripleO::Services::NovaConsoleauth
183 - OS::TripleO::Services::NovaVncproxy
184 - OS::TripleO::Services::Ntp
185 - OS::TripleO::Services::SwiftProxy
186 - OS::TripleO::Services::SwiftStorage
187 - OS::TripleO::Services::SwiftRingBuilder
188 - OS::TripleO::Services::Snmp
189 - OS::TripleO::Services::Timezone
190 - OS::TripleO::Services::CeilometerApi
191 - OS::TripleO::Services::CeilometerCollector
192 - OS::TripleO::Services::CeilometerExpirer
193 - OS::TripleO::Services::CeilometerAgentCentral
194 - OS::TripleO::Services::CeilometerAgentNotification
195 - OS::TripleO::Services::Horizon
196 - OS::TripleO::Services::GnocchiApi
197 - OS::TripleO::Services::GnocchiMetricd
198 - OS::TripleO::Services::GnocchiStatsd
199 - OS::Tripleo::Services::ManilaApi
200 - OS::Tripleo::Services::ManilaScheduler
201 - OS::Tripleo::Services::ManilaShare
202 - OS::TripleO::Services::AodhApi
203 - OS::TripleO::Services::AodhEvaluator
204 - OS::TripleO::Services::AodhNotifier
205 - OS::TripleO::Services::AodhListener
206 - OS::TripleO::Services::SaharaApi
207 - OS::TripleO::Services::SaharaEngine
208 description: A list of service resources (configured in the Heat
209 resource_registry) which represent nested stacks
210 for each service that should get installed on the Controllers.
211 type: comma_delimited_list
215 - OS::TripleO::Services::CephClient
216 - OS::TripleO::Services::CephExternal
217 - OS::TripleO::Services::Timezone
218 - OS::TripleO::Services::Ntp
219 - OS::TripleO::Services::Snmp
220 - OS::TripleO::Services::NovaCompute
221 - OS::TripleO::Services::NovaLibvirt
222 - OS::TripleO::Services::Kernel
223 - OS::TripleO::Services::ComputeNeutronCorePlugin
224 - OS::TripleO::Services::ComputeNeutronOvsAgent
225 - OS::TripleO::Services::ComputeCeilometerAgent
226 - OS::TripleO::Services::ComputeNeutronL3Agent
227 - OS::TripleO::Services::ComputeNeutronMetadataAgent
228 description: A list of service resources (configured in the Heat
229 resource_registry) which represent nested stacks
230 for each service that should get installed on the Compute Nodes.
231 type: comma_delimited_list
233 # Block storage specific parameters
237 BlockStorageExtraConfig:
240 BlockStorage specific configuration to inject into the cluster. Same
241 structure as ExtraConfig.
243 BlockStorageServices:
245 - OS::TripleO::Services::CinderVolume
246 - OS::TripleO::Services::Kernel
247 - OS::TripleO::Services::Ntp
248 - OS::TripleO::Services::Timezone
249 - OS::TripleO::Services::Snmp
250 description: A list of service resources (configured in the Heat
251 resource_registry) which represent nested stacks
252 for each service that should get installed on the BlockStorage nodes.
253 type: comma_delimited_list
255 # Object storage specific parameters
259 ObjectStorageExtraConfig:
262 ObjectStorage specific configuration to inject into the cluster. Same
263 structure as ExtraConfig.
265 ObjectStorageServices:
267 - OS::TripleO::Services::Kernel
268 - OS::TripleO::Services::Ntp
269 - OS::TripleO::Services::SwiftStorage
270 - OS::TripleO::Services::SwiftRingBuilder
271 - OS::TripleO::Services::Snmp
272 - OS::TripleO::Services::Timezone
273 description: A list of service resources (configured in the Heat
274 resource_registry) which represent nested stacks
275 for each service that should get installed on the ObjectStorage nodes.
276 Note this role currently only supports steps 2, 3 and 4 configuration.
277 type: comma_delimited_list
280 # Ceph storage specific parameters
284 CephStorageExtraConfig:
287 CephStorage specific configuration to inject into the cluster. Same
288 structure as ExtraConfig.
292 - OS::TripleO::Services::CephOSD
293 - OS::TripleO::Services::Kernel
294 - OS::TripleO::Services::Ntp
295 - OS::TripleO::Services::Timezone
296 description: A list of service resources (configured in the Heat
297 resource_registry) which represent nested stacks
298 for each service that should get installed on the CephStorage nodes.
299 type: comma_delimited_list
301 # Hostname format for each role
302 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
303 # and %stackname% is replaced with OS::stack_name in the template below.
304 # If you want to use the heat generated names, pass '' (empty string).
305 ControllerHostnameFormat:
307 description: Format for Controller node hostnames
308 default: '%stackname%-controller-%index%'
309 ComputeHostnameFormat:
311 description: Format for Compute node hostnames
312 default: '%stackname%-novacompute-%index%'
313 BlockStorageHostnameFormat:
315 description: Format for BlockStorage node hostnames
316 default: '%stackname%-blockstorage-%index%'
317 ObjectStorageHostnameFormat:
319 description: Format for SwiftStorage node hostnames
320 default: '%stackname%-objectstorage-%index%'
321 CephStorageHostnameFormat:
323 description: Format for CephStorage node hostnames
324 default: '%stackname%-cephstorage-%index%'
326 # Identifiers to trigger tasks on nodes
331 Setting to a previously unused value during stack-update will trigger
332 package update on all nodes
337 Setting this to a unique value will re-run any deployment tasks which
338 perform configuration on a Heat stack-update.
340 # If you want to remove a specific node from a resource group, you can pass
341 # the node name or id as a <Group>RemovalPolicies parameter, for example:
342 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
343 ControllerRemovalPolicies:
347 List of resources to be removed from ControllerResourceGroup when
348 doing an update which requires removal of specific resources.
349 ComputeRemovalPolicies:
353 List of resources to be removed from ComputeResourceGroup when
354 doing an update which requires removal of specific resources.
355 BlockStorageRemovalPolicies:
359 List of resources to be removed from BlockStorageResourceGroup when
360 doing an update which requires removal of specific resources.
361 ObjectStorageRemovalPolicies:
365 List of resources to be removed from ObjectStorageResourceGroup when
366 doing an update which requires removal of specific resources.
367 CephStorageRemovalPolicies:
371 List of resources to be removed from CephStorageResourceGroup when
372 doing an update which requires removal of specific resources.
376 description: Do not use deprecated params, they will be removed.
378 - controllerExtraConfig
383 HeatAuthEncryptionKey:
384 type: OS::Heat::RandomString
387 type: OS::Heat::RandomString
392 type: OS::Heat::RandomString
397 type: OS::TripleO::EndpointMap
399 CloudName: {get_param: CloudName}
400 NetIpMap: {get_attr: [VipMap, net_ip_map]}
401 ServiceNetMap: {get_param: ServiceNetMap}
403 ControllerServiceChain:
404 type: OS::TripleO::Services
406 Services: {get_param: ControllerServices}
407 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
410 type: OS::Heat::ResourceGroup
413 count: {get_param: ControllerCount}
414 removal_policies: {get_param: ControllerRemovalPolicies}
416 type: OS::TripleO::Controller
418 CloudDomain: {get_param: CloudDomain}
419 controllerExtraConfig: {get_param: controllerExtraConfig}
420 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
421 HorizonSecret: {get_resource: HorizonSecret}
422 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
423 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
424 PcsdPassword: {get_resource: PcsdPassword}
425 RabbitCookie: {get_attr: [RabbitCookie, value]}
426 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
427 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
428 ServiceNetMap: {get_param: ServiceNetMap}
429 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
430 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
433 template: {get_param: ControllerHostnameFormat}
435 '%stackname%': {get_param: 'OS::stack_name'}
437 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
438 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
442 type: OS::TripleO::Services
444 Services: {get_param: ComputeServices}
445 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
448 type: OS::Heat::ResourceGroup
451 count: {get_param: ComputeCount}
452 removal_policies: {get_param: ComputeRemovalPolicies}
454 type: OS::TripleO::Compute
456 CloudDomain: {get_param: CloudDomain}
457 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
458 KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
459 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
460 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
461 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
462 # L3 HA and Failover is not relevant for Computes, should be removed
463 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
464 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
465 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
466 ServiceNetMap: {get_param: ServiceNetMap}
467 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
470 template: {get_param: ComputeHostnameFormat}
472 '%stackname%': {get_param: 'OS::stack_name'}
474 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
475 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
477 BlockStorageServiceChain:
478 type: OS::TripleO::Services
480 Services: {get_param: BlockStorageServices}
481 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
484 type: OS::Heat::ResourceGroup
487 count: {get_param: BlockStorageCount}
488 removal_policies: {get_param: BlockStorageRemovalPolicies}
490 type: OS::TripleO::BlockStorage
492 UpdateIdentifier: {get_param: UpdateIdentifier}
495 template: {get_param: BlockStorageHostnameFormat}
497 '%stackname%': {get_param: 'OS::stack_name'}
498 ServiceNetMap: {get_param: ServiceNetMap}
499 ExtraConfig: {get_param: ExtraConfig}
500 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
501 CloudDomain: {get_param: CloudDomain}
502 ServerMetadata: {get_param: ServerMetadata}
504 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
505 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
507 ObjectStorageServiceChain:
508 type: OS::TripleO::Services
510 Services: {get_param: ObjectStorageServices}
511 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
514 type: OS::Heat::ResourceGroup
517 count: {get_param: ObjectStorageCount}
518 removal_policies: {get_param: ObjectStorageRemovalPolicies}
520 type: OS::TripleO::ObjectStorage
522 HashSuffix: {get_param: SwiftHashSuffix}
523 UpdateIdentifier: {get_param: UpdateIdentifier}
524 ServiceNetMap: {get_param: ServiceNetMap}
527 template: {get_param: ObjectStorageHostnameFormat}
529 '%stackname%': {get_param: 'OS::stack_name'}
530 ExtraConfig: {get_param: ExtraConfig}
531 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
532 CloudDomain: {get_param: CloudDomain}
533 ServerMetadata: {get_param: ServerMetadata}
535 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
536 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
538 CephStorageServiceChain:
539 type: OS::TripleO::Services
541 Services: {get_param: CephStorageServices}
542 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
545 type: OS::Heat::ResourceGroup
548 count: {get_param: CephStorageCount}
549 removal_policies: {get_param: CephStorageRemovalPolicies}
551 type: OS::TripleO::CephStorage
553 ServiceNetMap: {get_param: ServiceNetMap}
554 UpdateIdentifier: {get_param: UpdateIdentifier}
557 template: {get_param: CephStorageHostnameFormat}
559 '%stackname%': {get_param: 'OS::stack_name'}
560 ExtraConfig: {get_param: ExtraConfig}
561 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
562 CloudDomain: {get_param: CloudDomain}
563 ServerMetadata: {get_param: ServerMetadata}
565 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
566 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
569 type: OS::TripleO::Network::Ports::NetIpListMap
571 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
572 ExternalIpList: {get_attr: [Controller, external_ip_address]}
573 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
574 StorageIpList: {get_attr: [Controller, storage_ip_address]}
575 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
576 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
577 ManagementIpList: {get_attr: [Controller, management_ip_address]}
580 type: OS::TripleO::AllNodes::SoftwareConfig
585 - {get_attr: [Compute, hosts_entry]}
588 - {get_attr: [Controller, hosts_entry]}
591 - {get_attr: [BlockStorage, hosts_entry]}
594 - {get_attr: [ObjectStorage, hosts_entry]}
597 - {get_attr: [CephStorage, hosts_entry]}
598 controller_ips: {get_attr: [Controller, ip_address]}
599 controller_names: {get_attr: [Controller, hostname]}
600 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
601 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
602 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
603 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
604 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
605 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
606 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
607 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
608 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
609 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
610 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
611 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
612 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
613 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
614 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
615 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
616 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
617 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
618 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
619 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
620 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
621 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
622 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
623 ceph_mon_node_names: {get_attr: [Controller, hostname]}
624 DeployIdentifier: {get_param: DeployIdentifier}
625 UpdateIdentifier: {get_param: UpdateIdentifier}
628 type: OS::Heat::RandomString
632 MysqlClusterUniquePart:
633 type: OS::Heat::RandomString
638 type: OS::Heat::RandomString
641 salt: {get_param: RabbitCookieSalt}
643 # creates the network architecture
645 type: OS::TripleO::Network
648 type: OS::Neutron::Port
651 name: control_virtual_ip
652 network: {get_param: NeutronControlPlaneID}
653 fixed_ips: {get_param: ControlFixedIPs}
654 replacement_policy: AUTO
658 type: OS::TripleO::Network::Ports::RedisVipPort
660 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
661 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
662 PortName: redis_virtual_ip
663 NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
666 # The public VIP is on the External net, falls back to ctlplane
669 type: OS::TripleO::Network::Ports::ExternalVipPort
671 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
672 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
673 PortName: public_virtual_ip
674 FixedIPs: {get_param: PublicVirtualFixedIPs}
676 InternalApiVirtualIP:
678 type: OS::TripleO::Network::Ports::InternalApiVipPort
680 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
681 PortName: internal_api_virtual_ip
682 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
686 type: OS::TripleO::Network::Ports::StorageVipPort
688 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
689 PortName: storage_virtual_ip
690 FixedIPs: {get_param: StorageVirtualFixedIPs}
692 StorageMgmtVirtualIP:
694 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
696 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
697 PortName: storage_management_virtual_ip
698 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
701 type: OS::TripleO::Network::Ports::NetVipMap
703 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
704 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
705 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
706 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
707 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
708 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
709 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
710 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
711 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
712 # No tenant or management VIP required
715 type: OS::TripleO::VipConfig
718 type: OS::Heat::StructuredDeployments
721 config: {get_resource: VipConfig}
722 servers: {get_attr: [Controller, attributes, nova_server_resource]}
724 # service VIP mappings
725 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
726 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
727 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
728 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
729 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
730 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
731 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
732 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
733 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
734 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
735 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
736 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
737 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
738 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
739 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
740 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
741 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
742 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
743 # direct configuration of Virtual IPs for each network
744 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
745 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
746 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
747 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
748 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
749 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
750 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
752 ControllerSwiftDeployment:
753 type: OS::Heat::StructuredDeployments
755 name: ControllerSwiftDeployment
756 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
757 servers: {get_attr: [Controller, attributes, nova_server_resource]}
759 ObjectStorageSwiftDeployment:
760 type: OS::Heat::StructuredDeployments
762 name: ObjectStorageSwiftDeployment
763 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
764 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
766 SwiftDevicesAndProxyConfig:
767 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
769 controller_swift_devices: {get_attr: [Controller, swift_device]}
770 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
771 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
773 ControllerAllNodesDeployment:
774 type: OS::Heat::StructuredDeployments
776 name: ControllerAllNodesDeployment
777 config: {get_attr: [allNodesConfig, config_id]}
778 servers: {get_attr: [Controller, attributes, nova_server_resource]}
780 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
781 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
783 ComputeAllNodesDeployment:
784 type: OS::Heat::StructuredDeployments
786 name: ComputeAllNodesDeployment
787 config: {get_attr: [allNodesConfig, config_id]}
788 servers: {get_attr: [Compute, attributes, nova_server_resource]}
790 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
791 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
793 BlockStorageAllNodesDeployment:
794 type: OS::Heat::StructuredDeployments
796 name: BlockStorageAllNodesDeployment
797 config: {get_attr: [allNodesConfig, config_id]}
798 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
800 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
801 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
803 ObjectStorageAllNodesDeployment:
804 type: OS::Heat::StructuredDeployments
806 name: ObjectStorageAllNodesDeployment
807 config: {get_attr: [allNodesConfig, config_id]}
808 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
810 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
811 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
813 CephStorageAllNodesDeployment:
814 type: OS::Heat::StructuredDeployments
816 name: CephStorageAllNodesDeployment
817 config: {get_attr: [allNodesConfig, config_id]}
818 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
820 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
821 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
823 # All Nodes Validations
824 AllNodesValidationConfig:
825 type: OS::TripleO::AllNodes::Validation
830 - - {get_attr: [Controller, resource.0.external_ip_address]}
831 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
832 - {get_attr: [Controller, resource.0.storage_ip_address]}
833 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
834 - {get_attr: [Controller, resource.0.tenant_ip_address]}
836 ControllerAllNodesValidationDeployment:
837 type: OS::Heat::StructuredDeployments
838 depends_on: ControllerAllNodesDeployment
840 name: ControllerAllNodesValidationDeployment
841 config: {get_resource: AllNodesValidationConfig}
842 servers: {get_attr: [Controller, attributes, nova_server_resource]}
844 ComputeAllNodesValidationDeployment:
845 type: OS::Heat::StructuredDeployments
846 depends_on: ComputeAllNodesDeployment
848 name: ComputeAllNodesValidationDeployment
849 config: {get_resource: AllNodesValidationConfig}
850 servers: {get_attr: [Compute, attributes, nova_server_resource]}
852 BlockStorageAllNodesValidationDeployment:
853 type: OS::Heat::StructuredDeployments
854 depends_on: BlockStorageAllNodesDeployment
856 name: BlockStorageAllNodesValidationDeployment
857 config: {get_resource: AllNodesValidationConfig}
858 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
860 ObjectStorageAllNodesValidationDeployment:
861 type: OS::Heat::StructuredDeployments
862 depends_on: ObjectStorageAllNodesDeployment
864 name: ObjectStorageAllNodesValidationDeployment
865 config: {get_resource: AllNodesValidationConfig}
866 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
868 CephStorageAllNodesValidationDeployment:
869 type: OS::Heat::StructuredDeployments
870 depends_on: CephStorageAllNodesDeployment
872 name: CephStorageAllNodesValidationDeployment
873 config: {get_resource: AllNodesValidationConfig}
874 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
877 type: OS::TripleO::Tasks::UpdateWorkflow
879 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
880 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
881 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
882 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
883 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
885 deploy_identifier: {get_param: DeployIdentifier}
886 update_identifier: {get_param: UpdateIdentifier}
888 # Optional ExtraConfig for all nodes - all roles are passed in here, but
889 # the nested template may configure each role differently (or not at all)
891 type: OS::TripleO::AllNodesExtraConfig
894 - ComputeAllNodesValidationDeployment
895 - BlockStorageAllNodesValidationDeployment
896 - ObjectStorageAllNodesValidationDeployment
897 - CephStorageAllNodesValidationDeployment
898 - ControllerAllNodesValidationDeployment
900 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
901 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
902 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
903 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
904 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
906 # Nested stack deployment runs after all other controller deployments
907 ControllerNodesPostDeployment:
908 type: OS::TripleO::ControllerPostDeployment
909 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
911 servers: {get_attr: [Controller, attributes, nova_server_resource]}
912 RoleData: {get_attr: [ControllerServiceChain, role_data]}
914 ComputeNodesPostDeployment:
915 type: OS::TripleO::ComputePostDeployment
916 depends_on: [ComputeAllNodesDeployment]
918 servers: {get_attr: [Compute, attributes, nova_server_resource]}
919 RoleData: {get_attr: [ComputeServiceChain, role_data]}
921 ObjectStorageNodesPostDeployment:
922 type: OS::TripleO::ObjectStoragePostDeployment
923 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
925 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
926 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
928 BlockStorageNodesPostDeployment:
929 type: OS::TripleO::BlockStoragePostDeployment
930 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
932 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
933 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
935 CephStorageNodesPostDeployment:
936 type: OS::TripleO::CephStoragePostDeployment
937 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
939 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
940 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
944 description: URL for the Overcloud Keystone service
945 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
947 description: Keystone Admin VIP endpoint
948 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
950 description: Controller VIP for public API endpoints
951 value: {get_attr: [VipMap, net_ip_map, external]}
953 description: VIP for Aodh API internal endpoint
954 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
955 CeilometerInternalVip:
956 description: VIP for Ceilometer API internal endpoint
957 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
959 description: VIP for Cinder API internal endpoint
960 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
962 description: VIP for Glance API internal endpoint
963 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
965 description: VIP for Gnocchi API internal endpoint
966 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
968 description: VIP for Heat API internal endpoint
969 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
971 description: VIP for Ironic API internal endpoint
972 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
974 description: VIP for Keystone API internal endpoint
975 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
977 description: VIP for Manila API internal endpoint
978 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
980 description: VIP for Neutron API internal endpoint
981 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
983 description: VIP for Nova API internal endpoint
984 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
986 description: VIP for Sahara API internal endpoint
987 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
989 description: VIP for Swift Proxy internal endpoint
990 value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
993 Mapping of the resources with the needed info for their endpoints.
994 This includes the protocol used, the IP, port and also a full
995 representation of the URI.
996 value: {get_attr: [EndpointMap, endpoint_map]}
999 The content that should be appended to your /etc/hosts if you want to get
1000 hostname-based access to the deployed nodes (useful for testing without
1002 value: {get_attr: [allNodesConfig, hosts_entries]}
1004 description: The services enabled on each role
1006 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
1007 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
1008 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
1009 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
1010 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}