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 description: A list of service resources (configured in the Heat
198 resource_registry) which represent nested stacks
199 for each service that should get installed on the Compute Nodes.
200 type: comma_delimited_list
202 # Block storage specific parameters
206 BlockStorageExtraConfig:
209 BlockStorage specific configuration to inject into the cluster. Same
210 structure as ExtraConfig.
212 BlockStorageServices:
214 - OS::TripleO::Services::CinderVolume
215 - OS::TripleO::Services::Kernel
216 - OS::TripleO::Services::Ntp
217 - OS::TripleO::Services::Timezone
218 - OS::TripleO::Services::Snmp
219 - OS::TripleO::Services::TripleoPackages
220 - OS::TripleO::Services::TripleoFirewall
221 description: A list of service resources (configured in the Heat
222 resource_registry) which represent nested stacks
223 for each service that should get installed on the BlockStorage nodes.
224 type: comma_delimited_list
226 # Object storage specific parameters
230 ObjectStorageExtraConfig:
233 ObjectStorage specific configuration to inject into the cluster. Same
234 structure as ExtraConfig.
236 ObjectStorageServices:
238 - OS::TripleO::Services::Kernel
239 - OS::TripleO::Services::Ntp
240 - OS::TripleO::Services::SwiftStorage
241 - OS::TripleO::Services::SwiftRingBuilder
242 - OS::TripleO::Services::Snmp
243 - OS::TripleO::Services::Timezone
244 - OS::TripleO::Services::TripleoPackages
245 - OS::TripleO::Services::TripleoFirewall
246 description: A list of service resources (configured in the Heat
247 resource_registry) which represent nested stacks
248 for each service that should get installed on the ObjectStorage nodes.
249 Note this role currently only supports steps 2, 3 and 4 configuration.
250 type: comma_delimited_list
253 # Ceph storage specific parameters
257 CephStorageExtraConfig:
260 CephStorage specific configuration to inject into the cluster. Same
261 structure as ExtraConfig.
265 - OS::TripleO::Services::CephOSD
266 - OS::TripleO::Services::Kernel
267 - OS::TripleO::Services::Ntp
268 - OS::TripleO::Services::Timezone
269 - OS::TripleO::Services::TripleoPackages
270 - OS::TripleO::Services::TripleoFirewall
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 CephStorage nodes.
274 type: comma_delimited_list
276 # Hostname format for each role
277 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
278 # and %stackname% is replaced with OS::stack_name in the template below.
279 # If you want to use the heat generated names, pass '' (empty string).
280 ControllerHostnameFormat:
282 description: Format for Controller node hostnames
283 default: '%stackname%-controller-%index%'
284 ComputeHostnameFormat:
286 description: Format for Compute node hostnames
287 default: '%stackname%-novacompute-%index%'
288 BlockStorageHostnameFormat:
290 description: Format for BlockStorage node hostnames
291 default: '%stackname%-blockstorage-%index%'
292 ObjectStorageHostnameFormat:
294 description: Format for SwiftStorage node hostnames
295 default: '%stackname%-objectstorage-%index%'
296 CephStorageHostnameFormat:
298 description: Format for CephStorage node hostnames
299 default: '%stackname%-cephstorage-%index%'
301 # Identifiers to trigger tasks on nodes
306 Setting to a previously unused value during stack-update will trigger
307 package update on all nodes
312 Setting this to a unique value will re-run any deployment tasks which
313 perform configuration on a Heat stack-update.
315 # If you want to remove a specific node from a resource group, you can pass
316 # the node name or id as a <Group>RemovalPolicies parameter, for example:
317 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
318 ControllerRemovalPolicies:
322 List of resources to be removed from ControllerResourceGroup when
323 doing an update which requires removal of specific resources.
324 ComputeRemovalPolicies:
328 List of resources to be removed from ComputeResourceGroup when
329 doing an update which requires removal of specific resources.
330 BlockStorageRemovalPolicies:
334 List of resources to be removed from BlockStorageResourceGroup when
335 doing an update which requires removal of specific resources.
336 ObjectStorageRemovalPolicies:
340 List of resources to be removed from ObjectStorageResourceGroup when
341 doing an update which requires removal of specific resources.
342 CephStorageRemovalPolicies:
346 List of resources to be removed from CephStorageResourceGroup when
347 doing an update which requires removal of specific resources.
351 description: Do not use deprecated params, they will be removed.
353 - controllerExtraConfig
358 HeatAuthEncryptionKey:
359 type: OS::Heat::RandomString
362 type: OS::Heat::RandomString
367 type: OS::Heat::RandomString
372 type: OS::TripleO::ServiceNetMap
375 type: OS::TripleO::EndpointMap
377 CloudName: {get_param: CloudName}
378 NetIpMap: {get_attr: [VipMap, net_ip_map]}
379 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
381 ControllerServiceChain:
382 type: OS::TripleO::Services
384 Services: {get_param: ControllerServices}
385 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
386 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
389 type: OS::Heat::ResourceGroup
392 count: {get_param: ControllerCount}
393 removal_policies: {get_param: ControllerRemovalPolicies}
395 type: OS::TripleO::Controller
397 CloudDomain: {get_param: CloudDomain}
398 controllerExtraConfig: {get_param: controllerExtraConfig}
399 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
400 HorizonSecret: {get_resource: HorizonSecret}
401 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
402 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
403 PcsdPassword: {get_resource: PcsdPassword}
404 RabbitCookie: {get_attr: [RabbitCookie, value]}
405 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
406 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
407 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
408 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
409 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
412 template: {get_param: ControllerHostnameFormat}
414 '%stackname%': {get_param: 'OS::stack_name'}
416 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
417 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
420 type: OS::TripleO::Services
422 Services: {get_param: ComputeServices}
423 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
424 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
427 type: OS::Heat::ResourceGroup
430 count: {get_param: ComputeCount}
431 removal_policies: {get_param: ComputeRemovalPolicies}
433 type: OS::TripleO::Compute
435 CloudDomain: {get_param: CloudDomain}
436 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
437 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
438 # L3 HA and Failover is not relevant for Computes, should be removed
439 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
440 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
441 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
442 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
445 template: {get_param: ComputeHostnameFormat}
447 '%stackname%': {get_param: 'OS::stack_name'}
449 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
450 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
452 BlockStorageServiceChain:
453 type: OS::TripleO::Services
455 Services: {get_param: BlockStorageServices}
456 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
457 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
460 type: OS::Heat::ResourceGroup
463 count: {get_param: BlockStorageCount}
464 removal_policies: {get_param: BlockStorageRemovalPolicies}
466 type: OS::TripleO::BlockStorage
468 UpdateIdentifier: {get_param: UpdateIdentifier}
471 template: {get_param: BlockStorageHostnameFormat}
473 '%stackname%': {get_param: 'OS::stack_name'}
474 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
475 ExtraConfig: {get_param: ExtraConfig}
476 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
477 CloudDomain: {get_param: CloudDomain}
478 ServerMetadata: {get_param: ServerMetadata}
480 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
481 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
483 ObjectStorageServiceChain:
484 type: OS::TripleO::Services
486 Services: {get_param: ObjectStorageServices}
487 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
488 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
491 type: OS::Heat::ResourceGroup
494 count: {get_param: ObjectStorageCount}
495 removal_policies: {get_param: ObjectStorageRemovalPolicies}
497 type: OS::TripleO::ObjectStorage
499 HashSuffix: {get_param: SwiftHashSuffix}
500 UpdateIdentifier: {get_param: UpdateIdentifier}
501 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
504 template: {get_param: ObjectStorageHostnameFormat}
506 '%stackname%': {get_param: 'OS::stack_name'}
507 ExtraConfig: {get_param: ExtraConfig}
508 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
509 CloudDomain: {get_param: CloudDomain}
510 ServerMetadata: {get_param: ServerMetadata}
512 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
513 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
515 CephStorageServiceChain:
516 type: OS::TripleO::Services
518 Services: {get_param: CephStorageServices}
519 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
520 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
523 type: OS::Heat::ResourceGroup
526 count: {get_param: CephStorageCount}
527 removal_policies: {get_param: CephStorageRemovalPolicies}
529 type: OS::TripleO::CephStorage
531 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
532 UpdateIdentifier: {get_param: UpdateIdentifier}
535 template: {get_param: CephStorageHostnameFormat}
537 '%stackname%': {get_param: 'OS::stack_name'}
538 ExtraConfig: {get_param: ExtraConfig}
539 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
540 CloudDomain: {get_param: CloudDomain}
541 ServerMetadata: {get_param: ServerMetadata}
543 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
544 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
547 type: OS::TripleO::Network::Ports::NetIpListMap
549 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
550 ExternalIpList: {get_attr: [Controller, external_ip_address]}
551 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
552 StorageIpList: {get_attr: [Controller, storage_ip_address]}
553 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
554 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
555 ManagementIpList: {get_attr: [Controller, management_ip_address]}
558 type: OS::TripleO::AllNodes::SoftwareConfig
563 - {get_attr: [Compute, hosts_entry]}
566 - {get_attr: [Controller, hosts_entry]}
569 - {get_attr: [BlockStorage, hosts_entry]}
572 - {get_attr: [ObjectStorage, hosts_entry]}
575 - {get_attr: [CephStorage, hosts_entry]}
576 controller_ips: {get_attr: [Controller, ip_address]}
577 controller_names: {get_attr: [Controller, hostname]}
578 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
579 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
580 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
581 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
582 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
583 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
584 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
585 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
586 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
587 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
588 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
589 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
590 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
591 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
592 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
593 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
594 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
595 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
596 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
597 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
598 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
599 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
600 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
601 ceph_mon_node_names: {get_attr: [Controller, hostname]}
602 DeployIdentifier: {get_param: DeployIdentifier}
603 UpdateIdentifier: {get_param: UpdateIdentifier}
606 type: OS::Heat::RandomString
610 MysqlClusterUniquePart:
611 type: OS::Heat::RandomString
616 type: OS::Heat::RandomString
619 salt: {get_param: RabbitCookieSalt}
621 # creates the network architecture
623 type: OS::TripleO::Network
626 type: OS::Neutron::Port
629 name: control_virtual_ip
630 network: {get_param: NeutronControlPlaneID}
631 fixed_ips: {get_param: ControlFixedIPs}
632 replacement_policy: AUTO
636 type: OS::TripleO::Network::Ports::RedisVipPort
638 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
639 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
640 PortName: redis_virtual_ip
641 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
644 # The public VIP is on the External net, falls back to ctlplane
647 type: OS::TripleO::Network::Ports::ExternalVipPort
649 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
650 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
651 PortName: public_virtual_ip
652 FixedIPs: {get_param: PublicVirtualFixedIPs}
654 InternalApiVirtualIP:
656 type: OS::TripleO::Network::Ports::InternalApiVipPort
658 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
659 PortName: internal_api_virtual_ip
660 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
664 type: OS::TripleO::Network::Ports::StorageVipPort
666 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
667 PortName: storage_virtual_ip
668 FixedIPs: {get_param: StorageVirtualFixedIPs}
670 StorageMgmtVirtualIP:
672 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
674 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
675 PortName: storage_management_virtual_ip
676 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
679 type: OS::TripleO::Network::Ports::NetVipMap
681 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
682 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
683 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
684 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
685 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
686 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
687 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
688 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
689 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
690 # No tenant or management VIP required
693 type: OS::TripleO::VipConfig
696 type: OS::Heat::StructuredDeployments
699 config: {get_resource: VipConfig}
700 servers: {get_attr: [Controller, attributes, nova_server_resource]}
702 # service VIP mappings
703 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
704 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
705 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
706 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
707 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
708 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
709 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
710 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
711 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
712 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
713 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
714 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
715 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
716 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
717 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
718 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
719 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
720 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
721 # direct configuration of Virtual IPs for each network
722 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
723 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
724 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
725 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
726 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
727 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
728 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
730 ControllerSwiftDeployment:
731 type: OS::Heat::StructuredDeployments
733 name: ControllerSwiftDeployment
734 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
735 servers: {get_attr: [Controller, attributes, nova_server_resource]}
737 ObjectStorageSwiftDeployment:
738 type: OS::Heat::StructuredDeployments
740 name: ObjectStorageSwiftDeployment
741 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
742 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
744 SwiftDevicesAndProxyConfig:
745 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
747 controller_swift_devices: {get_attr: [Controller, swift_device]}
748 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
749 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
751 ControllerAllNodesDeployment:
752 type: OS::Heat::StructuredDeployments
754 name: ControllerAllNodesDeployment
755 config: {get_attr: [allNodesConfig, config_id]}
756 servers: {get_attr: [Controller, attributes, nova_server_resource]}
758 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
759 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
761 ComputeAllNodesDeployment:
762 type: OS::Heat::StructuredDeployments
764 name: ComputeAllNodesDeployment
765 config: {get_attr: [allNodesConfig, config_id]}
766 servers: {get_attr: [Compute, attributes, nova_server_resource]}
768 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
769 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
771 BlockStorageAllNodesDeployment:
772 type: OS::Heat::StructuredDeployments
774 name: BlockStorageAllNodesDeployment
775 config: {get_attr: [allNodesConfig, config_id]}
776 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
778 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
779 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
781 ObjectStorageAllNodesDeployment:
782 type: OS::Heat::StructuredDeployments
784 name: ObjectStorageAllNodesDeployment
785 config: {get_attr: [allNodesConfig, config_id]}
786 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
788 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
789 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
791 CephStorageAllNodesDeployment:
792 type: OS::Heat::StructuredDeployments
794 name: CephStorageAllNodesDeployment
795 config: {get_attr: [allNodesConfig, config_id]}
796 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
798 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
799 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
801 # All Nodes Validations
802 AllNodesValidationConfig:
803 type: OS::TripleO::AllNodes::Validation
808 - - {get_attr: [Controller, resource.0.external_ip_address]}
809 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
810 - {get_attr: [Controller, resource.0.storage_ip_address]}
811 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
812 - {get_attr: [Controller, resource.0.tenant_ip_address]}
813 - {get_attr: [Controller, resource.0.management_ip_address]}
815 ControllerAllNodesValidationDeployment:
816 type: OS::Heat::StructuredDeployments
817 depends_on: ControllerAllNodesDeployment
819 name: ControllerAllNodesValidationDeployment
820 config: {get_resource: AllNodesValidationConfig}
821 servers: {get_attr: [Controller, attributes, nova_server_resource]}
823 ComputeAllNodesValidationDeployment:
824 type: OS::Heat::StructuredDeployments
825 depends_on: ComputeAllNodesDeployment
827 name: ComputeAllNodesValidationDeployment
828 config: {get_resource: AllNodesValidationConfig}
829 servers: {get_attr: [Compute, attributes, nova_server_resource]}
831 BlockStorageAllNodesValidationDeployment:
832 type: OS::Heat::StructuredDeployments
833 depends_on: BlockStorageAllNodesDeployment
835 name: BlockStorageAllNodesValidationDeployment
836 config: {get_resource: AllNodesValidationConfig}
837 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
839 ObjectStorageAllNodesValidationDeployment:
840 type: OS::Heat::StructuredDeployments
841 depends_on: ObjectStorageAllNodesDeployment
843 name: ObjectStorageAllNodesValidationDeployment
844 config: {get_resource: AllNodesValidationConfig}
845 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
847 CephStorageAllNodesValidationDeployment:
848 type: OS::Heat::StructuredDeployments
849 depends_on: CephStorageAllNodesDeployment
851 name: CephStorageAllNodesValidationDeployment
852 config: {get_resource: AllNodesValidationConfig}
853 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
856 type: OS::TripleO::Tasks::UpdateWorkflow
858 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
859 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
860 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
861 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
862 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
864 deploy_identifier: {get_param: DeployIdentifier}
865 update_identifier: {get_param: UpdateIdentifier}
867 # Optional ExtraConfig for all nodes - all roles are passed in here, but
868 # the nested template may configure each role differently (or not at all)
870 type: OS::TripleO::AllNodesExtraConfig
873 - ComputeAllNodesValidationDeployment
874 - BlockStorageAllNodesValidationDeployment
875 - ObjectStorageAllNodesValidationDeployment
876 - CephStorageAllNodesValidationDeployment
877 - ControllerAllNodesValidationDeployment
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 # Nested stack deployment runs after all other controller deployments
886 ControllerNodesPostDeployment:
887 type: OS::TripleO::ControllerPostDeployment
888 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
890 servers: {get_attr: [Controller, attributes, nova_server_resource]}
891 RoleData: {get_attr: [ControllerServiceChain, role_data]}
893 ComputeNodesPostDeployment:
894 type: OS::TripleO::ComputePostDeployment
895 depends_on: [ComputeAllNodesDeployment]
897 servers: {get_attr: [Compute, attributes, nova_server_resource]}
898 RoleData: {get_attr: [ComputeServiceChain, role_data]}
900 ObjectStorageNodesPostDeployment:
901 type: OS::TripleO::ObjectStoragePostDeployment
902 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
904 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
905 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
907 BlockStorageNodesPostDeployment:
908 type: OS::TripleO::BlockStoragePostDeployment
909 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
911 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
912 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
914 CephStorageNodesPostDeployment:
915 type: OS::TripleO::CephStoragePostDeployment
916 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
918 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
919 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
923 description: URL for the Overcloud Keystone service
924 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
926 description: Keystone Admin VIP endpoint
927 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
929 description: Controller VIP for public API endpoints
930 value: {get_attr: [VipMap, net_ip_map, external]}
932 description: VIP for Aodh API internal endpoint
933 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
934 CeilometerInternalVip:
935 description: VIP for Ceilometer API internal endpoint
936 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
938 description: VIP for Cinder API internal endpoint
939 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
941 description: VIP for Glance API internal endpoint
942 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
944 description: VIP for Gnocchi API internal endpoint
945 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
947 description: VIP for Heat API internal endpoint
948 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
950 description: VIP for Ironic API internal endpoint
951 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
953 description: VIP for Keystone API internal endpoint
954 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
956 description: VIP for Manila API internal endpoint
957 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
959 description: VIP for Neutron API internal endpoint
960 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
962 description: VIP for Nova API internal endpoint
963 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
965 description: VIP for Sahara API internal endpoint
966 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
968 description: VIP for Swift Proxy internal endpoint
969 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
972 Mapping of the resources with the needed info for their endpoints.
973 This includes the protocol used, the IP, port and also a full
974 representation of the URI.
975 value: {get_attr: [EndpointMap, endpoint_map]}
978 The content that should be appended to your /etc/hosts if you want to get
979 hostname-based access to the deployed nodes (useful for testing without
981 value: {get_attr: [allNodesConfig, hosts_entries]}
983 description: The services enabled on each role
985 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
986 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
987 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
988 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
989 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}