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'}]
62 Control the IP allocation for the virtual IP used by Redis. E.g.
63 [{'ip_address':'1.2.3.4'}]
66 default: 'localdomain'
69 The DNS domain used for the hosts. This should match the dhcp_domain
70 configured in the Undercloud neutron. Defaults to localdomain.
74 Extra properties or metadata passed to Nova for the created nodes in
75 the overcloud. It's accessible via the Nova metadata API.
78 # Controller-specific params
82 controllerExtraConfig:
85 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
90 Additional configuration to inject into the cluster. The format required
91 may be implementation specific, e.g puppet hieradata. Any role specific
92 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
95 description: A random string to be used as a salt when hashing to determine mappings in the ring.
100 # Compute-specific params
104 HypervisorNeutronPhysicalBridge:
107 An OVS bridge to create on each hypervisor. This defaults to br-ex the
108 same as the control plane nodes, as we have a uniform configuration of
109 the openvswitch agent. Typically should not need to be changed.
111 HypervisorNeutronPublicInterface:
113 description: What interface to add to the HypervisorNeutronPhysicalBridge.
118 - OS::TripleO::Services::CephMon
119 - OS::TripleO::Services::CephExternal
120 - OS::TripleO::Services::CinderApi
121 - OS::TripleO::Services::CinderBackup
122 - OS::TripleO::Services::CinderScheduler
123 - OS::TripleO::Services::CinderVolume
124 - OS::TripleO::Services::Core
125 - OS::TripleO::Services::Kernel
126 - OS::TripleO::Services::Keystone
127 - OS::TripleO::Services::GlanceApi
128 - OS::TripleO::Services::GlanceRegistry
129 - OS::TripleO::Services::HeatApi
130 - OS::TripleO::Services::HeatApiCfn
131 - OS::TripleO::Services::HeatApiCloudwatch
132 - OS::TripleO::Services::HeatEngine
133 - OS::TripleO::Services::MySQL
134 - OS::TripleO::Services::NeutronDhcpAgent
135 - OS::TripleO::Services::NeutronL3Agent
136 - OS::TripleO::Services::NeutronMetadataAgent
137 - OS::TripleO::Services::NeutronApi
138 - OS::TripleO::Services::NeutronCorePlugin
139 - OS::TripleO::Services::NeutronOvsAgent
140 - OS::TripleO::Services::RabbitMQ
141 - OS::TripleO::Services::HAproxy
142 - OS::TripleO::Services::Keepalived
143 - OS::TripleO::Services::Memcached
144 - OS::TripleO::Services::Pacemaker
145 - OS::TripleO::Services::Redis
146 - OS::TripleO::Services::NovaConductor
147 - OS::TripleO::Services::MongoDb
148 - OS::TripleO::Services::NovaApi
149 - OS::TripleO::Services::NovaScheduler
150 - OS::TripleO::Services::NovaConsoleauth
151 - OS::TripleO::Services::NovaVncproxy
152 - OS::TripleO::Services::Ntp
153 - OS::TripleO::Services::SwiftProxy
154 - OS::TripleO::Services::SwiftStorage
155 - OS::TripleO::Services::SwiftRingBuilder
156 - OS::TripleO::Services::Snmp
157 - OS::TripleO::Services::Timezone
158 - OS::TripleO::Services::CeilometerApi
159 - OS::TripleO::Services::CeilometerCollector
160 - OS::TripleO::Services::CeilometerExpirer
161 - OS::TripleO::Services::CeilometerAgentCentral
162 - OS::TripleO::Services::CeilometerAgentNotification
163 - OS::TripleO::Services::Horizon
164 - OS::TripleO::Services::GnocchiApi
165 - OS::TripleO::Services::GnocchiMetricd
166 - OS::TripleO::Services::GnocchiStatsd
167 - OS::Tripleo::Services::ManilaApi
168 - OS::Tripleo::Services::ManilaScheduler
169 - OS::Tripleo::Services::ManilaShare
170 - OS::TripleO::Services::AodhApi
171 - OS::TripleO::Services::AodhEvaluator
172 - OS::TripleO::Services::AodhNotifier
173 - OS::TripleO::Services::AodhListener
174 - OS::TripleO::Services::SaharaApi
175 - OS::TripleO::Services::SaharaEngine
176 - OS::TripleO::Services::IronicApi
177 - OS::TripleO::Services::IronicConductor
178 - OS::TripleO::Services::NovaIronic
179 - OS::TripleO::Services::TripleoPackages
180 - OS::TripleO::Services::TripleoFirewall
181 description: A list of service resources (configured in the Heat
182 resource_registry) which represent nested stacks
183 for each service that should get installed on the Controllers.
184 type: comma_delimited_list
188 - OS::TripleO::Services::CephClient
189 - OS::TripleO::Services::CephExternal
190 - OS::TripleO::Services::Timezone
191 - OS::TripleO::Services::Ntp
192 - OS::TripleO::Services::Snmp
193 - OS::TripleO::Services::NovaCompute
194 - OS::TripleO::Services::NovaLibvirt
195 - OS::TripleO::Services::Kernel
196 - OS::TripleO::Services::ComputeNeutronCorePlugin
197 - OS::TripleO::Services::ComputeNeutronOvsAgent
198 - OS::TripleO::Services::ComputeCeilometerAgent
199 - OS::TripleO::Services::ComputeNeutronL3Agent
200 - OS::TripleO::Services::ComputeNeutronMetadataAgent
201 - OS::TripleO::Services::TripleoPackages
202 - OS::TripleO::Services::TripleoFirewall
203 description: A list of service resources (configured in the Heat
204 resource_registry) which represent nested stacks
205 for each service that should get installed on the Compute Nodes.
206 type: comma_delimited_list
208 # Block storage specific parameters
212 BlockStorageExtraConfig:
215 BlockStorage specific configuration to inject into the cluster. Same
216 structure as ExtraConfig.
218 BlockStorageServices:
220 - OS::TripleO::Services::CinderVolume
221 - OS::TripleO::Services::Kernel
222 - OS::TripleO::Services::Ntp
223 - OS::TripleO::Services::Timezone
224 - OS::TripleO::Services::Snmp
225 - OS::TripleO::Services::TripleoPackages
226 - OS::TripleO::Services::TripleoFirewall
227 description: A list of service resources (configured in the Heat
228 resource_registry) which represent nested stacks
229 for each service that should get installed on the BlockStorage nodes.
230 type: comma_delimited_list
232 # Object storage specific parameters
236 ObjectStorageExtraConfig:
239 ObjectStorage specific configuration to inject into the cluster. Same
240 structure as ExtraConfig.
242 ObjectStorageServices:
244 - OS::TripleO::Services::Kernel
245 - OS::TripleO::Services::Ntp
246 - OS::TripleO::Services::SwiftStorage
247 - OS::TripleO::Services::SwiftRingBuilder
248 - OS::TripleO::Services::Snmp
249 - OS::TripleO::Services::Timezone
250 - OS::TripleO::Services::TripleoPackages
251 - OS::TripleO::Services::TripleoFirewall
252 description: A list of service resources (configured in the Heat
253 resource_registry) which represent nested stacks
254 for each service that should get installed on the ObjectStorage nodes.
255 Note this role currently only supports steps 2, 3 and 4 configuration.
256 type: comma_delimited_list
259 # Ceph storage specific parameters
263 CephStorageExtraConfig:
266 CephStorage specific configuration to inject into the cluster. Same
267 structure as ExtraConfig.
271 - OS::TripleO::Services::CephOSD
272 - OS::TripleO::Services::Kernel
273 - OS::TripleO::Services::Ntp
274 - OS::TripleO::Services::Timezone
275 - OS::TripleO::Services::TripleoPackages
276 - OS::TripleO::Services::TripleoFirewall
277 description: A list of service resources (configured in the Heat
278 resource_registry) which represent nested stacks
279 for each service that should get installed on the CephStorage nodes.
280 type: comma_delimited_list
282 # Hostname format for each role
283 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
284 # and %stackname% is replaced with OS::stack_name in the template below.
285 # If you want to use the heat generated names, pass '' (empty string).
286 ControllerHostnameFormat:
288 description: Format for Controller node hostnames
289 default: '%stackname%-controller-%index%'
290 ComputeHostnameFormat:
292 description: Format for Compute node hostnames
293 default: '%stackname%-novacompute-%index%'
294 BlockStorageHostnameFormat:
296 description: Format for BlockStorage node hostnames
297 default: '%stackname%-blockstorage-%index%'
298 ObjectStorageHostnameFormat:
300 description: Format for SwiftStorage node hostnames
301 default: '%stackname%-objectstorage-%index%'
302 CephStorageHostnameFormat:
304 description: Format for CephStorage node hostnames
305 default: '%stackname%-cephstorage-%index%'
307 # Identifiers to trigger tasks on nodes
312 Setting to a previously unused value during stack-update will trigger
313 package update on all nodes
318 Setting this to a unique value will re-run any deployment tasks which
319 perform configuration on a Heat stack-update.
321 # If you want to remove a specific node from a resource group, you can pass
322 # the node name or id as a <Group>RemovalPolicies parameter, for example:
323 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
324 ControllerRemovalPolicies:
328 List of resources to be removed from ControllerResourceGroup when
329 doing an update which requires removal of specific resources.
330 ComputeRemovalPolicies:
334 List of resources to be removed from ComputeResourceGroup when
335 doing an update which requires removal of specific resources.
336 BlockStorageRemovalPolicies:
340 List of resources to be removed from BlockStorageResourceGroup when
341 doing an update which requires removal of specific resources.
342 ObjectStorageRemovalPolicies:
346 List of resources to be removed from ObjectStorageResourceGroup when
347 doing an update which requires removal of specific resources.
348 CephStorageRemovalPolicies:
352 List of resources to be removed from CephStorageResourceGroup when
353 doing an update which requires removal of specific resources.
357 description: Do not use deprecated params, they will be removed.
359 - controllerExtraConfig
364 HeatAuthEncryptionKey:
365 type: OS::Heat::RandomString
368 type: OS::Heat::RandomString
373 type: OS::Heat::RandomString
378 type: OS::TripleO::ServiceNetMap
381 type: OS::TripleO::EndpointMap
383 CloudName: {get_param: CloudName}
384 NetIpMap: {get_attr: [VipMap, net_ip_map]}
385 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
387 ControllerServiceChain:
388 type: OS::TripleO::Services
390 Services: {get_param: ControllerServices}
391 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
392 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
393 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
396 type: OS::Heat::ResourceGroup
399 count: {get_param: ControllerCount}
400 removal_policies: {get_param: ControllerRemovalPolicies}
402 type: OS::TripleO::Controller
404 CloudDomain: {get_param: CloudDomain}
405 controllerExtraConfig: {get_param: controllerExtraConfig}
406 HorizonSecret: {get_resource: HorizonSecret}
407 PcsdPassword: {get_resource: PcsdPassword}
408 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
409 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
410 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
411 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
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
617 type: OS::Heat::RandomString
620 salt: {get_param: RabbitCookieSalt}
623 type: OS::TripleO::DefaultPasswords
625 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
626 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
627 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
628 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
629 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
631 # creates the network architecture
633 type: OS::TripleO::Network
636 type: OS::Neutron::Port
639 name: control_virtual_ip
640 network: {get_param: NeutronControlPlaneID}
641 fixed_ips: {get_param: ControlFixedIPs}
642 replacement_policy: AUTO
646 type: OS::TripleO::Network::Ports::RedisVipPort
648 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
649 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
650 PortName: redis_virtual_ip
651 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
653 FixedIPs: {get_param: RedisVirtualFixedIPs}
655 # The public VIP is on the External net, falls back to ctlplane
658 type: OS::TripleO::Network::Ports::ExternalVipPort
660 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
661 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
662 PortName: public_virtual_ip
663 FixedIPs: {get_param: PublicVirtualFixedIPs}
665 InternalApiVirtualIP:
667 type: OS::TripleO::Network::Ports::InternalApiVipPort
669 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
670 PortName: internal_api_virtual_ip
671 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
675 type: OS::TripleO::Network::Ports::StorageVipPort
677 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
678 PortName: storage_virtual_ip
679 FixedIPs: {get_param: StorageVirtualFixedIPs}
681 StorageMgmtVirtualIP:
683 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
685 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
686 PortName: storage_management_virtual_ip
687 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
690 type: OS::TripleO::Network::Ports::NetVipMap
692 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
693 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
694 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
695 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
696 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
697 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
698 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
699 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
700 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
701 # No tenant or management VIP required
704 type: OS::TripleO::VipConfig
707 type: OS::Heat::StructuredDeployments
710 config: {get_resource: VipConfig}
711 servers: {get_attr: [Controller, attributes, nova_server_resource]}
713 # service VIP mappings
714 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
715 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
716 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
717 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
718 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
719 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
720 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
721 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
722 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
723 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
724 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
725 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
726 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
727 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
728 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
729 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
730 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
731 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
732 # direct configuration of Virtual IPs for each network
733 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
734 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
735 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
736 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
737 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
738 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
739 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
741 ControllerSwiftDeployment:
742 type: OS::Heat::StructuredDeployments
744 name: ControllerSwiftDeployment
745 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
746 servers: {get_attr: [Controller, attributes, nova_server_resource]}
748 ObjectStorageSwiftDeployment:
749 type: OS::Heat::StructuredDeployments
751 name: ObjectStorageSwiftDeployment
752 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
753 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
755 SwiftDevicesAndProxyConfig:
756 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
758 controller_swift_devices: {get_attr: [Controller, swift_device]}
759 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
760 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
762 ControllerAllNodesDeployment:
763 type: OS::Heat::StructuredDeployments
765 name: ControllerAllNodesDeployment
766 config: {get_attr: [allNodesConfig, config_id]}
767 servers: {get_attr: [Controller, attributes, nova_server_resource]}
769 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
770 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
772 ComputeAllNodesDeployment:
773 type: OS::Heat::StructuredDeployments
775 name: ComputeAllNodesDeployment
776 config: {get_attr: [allNodesConfig, config_id]}
777 servers: {get_attr: [Compute, attributes, nova_server_resource]}
779 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
780 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
782 BlockStorageAllNodesDeployment:
783 type: OS::Heat::StructuredDeployments
785 name: BlockStorageAllNodesDeployment
786 config: {get_attr: [allNodesConfig, config_id]}
787 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
789 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
790 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
792 ObjectStorageAllNodesDeployment:
793 type: OS::Heat::StructuredDeployments
795 name: ObjectStorageAllNodesDeployment
796 config: {get_attr: [allNodesConfig, config_id]}
797 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
799 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
800 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
802 CephStorageAllNodesDeployment:
803 type: OS::Heat::StructuredDeployments
805 name: CephStorageAllNodesDeployment
806 config: {get_attr: [allNodesConfig, config_id]}
807 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
809 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
810 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
812 # All Nodes Validations
813 AllNodesValidationConfig:
814 type: OS::TripleO::AllNodes::Validation
819 - - {get_attr: [Controller, resource.0.external_ip_address]}
820 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
821 - {get_attr: [Controller, resource.0.storage_ip_address]}
822 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
823 - {get_attr: [Controller, resource.0.tenant_ip_address]}
824 - {get_attr: [Controller, resource.0.management_ip_address]}
826 ControllerAllNodesValidationDeployment:
827 type: OS::Heat::StructuredDeployments
828 depends_on: ControllerAllNodesDeployment
830 name: ControllerAllNodesValidationDeployment
831 config: {get_resource: AllNodesValidationConfig}
832 servers: {get_attr: [Controller, attributes, nova_server_resource]}
834 ComputeAllNodesValidationDeployment:
835 type: OS::Heat::StructuredDeployments
836 depends_on: ComputeAllNodesDeployment
838 name: ComputeAllNodesValidationDeployment
839 config: {get_resource: AllNodesValidationConfig}
840 servers: {get_attr: [Compute, attributes, nova_server_resource]}
842 BlockStorageAllNodesValidationDeployment:
843 type: OS::Heat::StructuredDeployments
844 depends_on: BlockStorageAllNodesDeployment
846 name: BlockStorageAllNodesValidationDeployment
847 config: {get_resource: AllNodesValidationConfig}
848 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
850 ObjectStorageAllNodesValidationDeployment:
851 type: OS::Heat::StructuredDeployments
852 depends_on: ObjectStorageAllNodesDeployment
854 name: ObjectStorageAllNodesValidationDeployment
855 config: {get_resource: AllNodesValidationConfig}
856 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
858 CephStorageAllNodesValidationDeployment:
859 type: OS::Heat::StructuredDeployments
860 depends_on: CephStorageAllNodesDeployment
862 name: CephStorageAllNodesValidationDeployment
863 config: {get_resource: AllNodesValidationConfig}
864 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
867 type: OS::TripleO::Tasks::UpdateWorkflow
869 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
870 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
871 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
872 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
873 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
875 deploy_identifier: {get_param: DeployIdentifier}
876 update_identifier: {get_param: UpdateIdentifier}
878 # Optional ExtraConfig for all nodes - all roles are passed in here, but
879 # the nested template may configure each role differently (or not at all)
881 type: OS::TripleO::AllNodesExtraConfig
884 - ComputeAllNodesValidationDeployment
885 - BlockStorageAllNodesValidationDeployment
886 - ObjectStorageAllNodesValidationDeployment
887 - CephStorageAllNodesValidationDeployment
888 - ControllerAllNodesValidationDeployment
890 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
891 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
892 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
893 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
894 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
896 # Nested stack deployment runs after all other controller deployments
897 ControllerNodesPostDeployment:
898 type: OS::TripleO::ControllerPostDeployment
899 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
901 servers: {get_attr: [Controller, attributes, nova_server_resource]}
902 RoleData: {get_attr: [ControllerServiceChain, role_data]}
904 ComputeNodesPostDeployment:
905 type: OS::TripleO::ComputePostDeployment
906 depends_on: [ComputeAllNodesDeployment]
908 servers: {get_attr: [Compute, attributes, nova_server_resource]}
909 RoleData: {get_attr: [ComputeServiceChain, role_data]}
911 ObjectStorageNodesPostDeployment:
912 type: OS::TripleO::ObjectStoragePostDeployment
913 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
915 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
916 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
918 BlockStorageNodesPostDeployment:
919 type: OS::TripleO::BlockStoragePostDeployment
920 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
922 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
923 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
925 CephStorageNodesPostDeployment:
926 type: OS::TripleO::CephStoragePostDeployment
927 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
929 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
930 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
934 description: URL for the Overcloud Keystone service
935 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
937 description: Keystone Admin VIP endpoint
938 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
940 description: Controller VIP for public API endpoints
941 value: {get_attr: [VipMap, net_ip_map, external]}
943 description: VIP for Aodh API internal endpoint
944 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
945 CeilometerInternalVip:
946 description: VIP for Ceilometer API internal endpoint
947 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
949 description: VIP for Cinder API internal endpoint
950 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
952 description: VIP for Glance API internal endpoint
953 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
955 description: VIP for Gnocchi API internal endpoint
956 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
958 description: VIP for Heat API internal endpoint
959 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
961 description: VIP for Ironic API internal endpoint
962 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
964 description: VIP for Keystone API internal endpoint
965 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
967 description: VIP for Manila API internal endpoint
968 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
970 description: VIP for Neutron API internal endpoint
971 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
973 description: VIP for Nova API internal endpoint
974 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
976 description: VIP for Sahara API internal endpoint
977 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
979 description: VIP for Swift Proxy internal endpoint
980 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
983 Mapping of the resources with the needed info for their endpoints.
984 This includes the protocol used, the IP, port and also a full
985 representation of the URI.
986 value: {get_attr: [EndpointMap, endpoint_map]}
989 The content that should be appended to your /etc/hosts if you want to get
990 hostname-based access to the deployed nodes (useful for testing without
992 value: {get_attr: [allNodesConfig, hosts_entries]}
994 description: The services enabled on each role
996 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
997 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
998 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
999 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
1000 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}