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]}
387 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
390 type: OS::Heat::ResourceGroup
393 count: {get_param: ControllerCount}
394 removal_policies: {get_param: ControllerRemovalPolicies}
396 type: OS::TripleO::Controller
398 CloudDomain: {get_param: CloudDomain}
399 controllerExtraConfig: {get_param: controllerExtraConfig}
400 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
401 HorizonSecret: {get_resource: HorizonSecret}
402 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
403 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
404 PcsdPassword: {get_resource: PcsdPassword}
405 RabbitCookie: {get_attr: [RabbitCookie, value]}
406 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
407 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
408 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
409 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
410 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
413 template: {get_param: ControllerHostnameFormat}
415 '%stackname%': {get_param: 'OS::stack_name'}
417 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
418 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
421 type: OS::TripleO::Services
423 Services: {get_param: ComputeServices}
424 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
425 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
426 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
429 type: OS::Heat::ResourceGroup
432 count: {get_param: ComputeCount}
433 removal_policies: {get_param: ComputeRemovalPolicies}
435 type: OS::TripleO::Compute
437 CloudDomain: {get_param: CloudDomain}
438 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
439 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
440 # L3 HA and Failover is not relevant for Computes, should be removed
441 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
442 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
443 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
444 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
447 template: {get_param: ComputeHostnameFormat}
449 '%stackname%': {get_param: 'OS::stack_name'}
451 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
452 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
454 BlockStorageServiceChain:
455 type: OS::TripleO::Services
457 Services: {get_param: BlockStorageServices}
458 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
459 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
460 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
463 type: OS::Heat::ResourceGroup
466 count: {get_param: BlockStorageCount}
467 removal_policies: {get_param: BlockStorageRemovalPolicies}
469 type: OS::TripleO::BlockStorage
471 UpdateIdentifier: {get_param: UpdateIdentifier}
474 template: {get_param: BlockStorageHostnameFormat}
476 '%stackname%': {get_param: 'OS::stack_name'}
477 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
478 ExtraConfig: {get_param: ExtraConfig}
479 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
480 CloudDomain: {get_param: CloudDomain}
481 ServerMetadata: {get_param: ServerMetadata}
483 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
484 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
486 ObjectStorageServiceChain:
487 type: OS::TripleO::Services
489 Services: {get_param: ObjectStorageServices}
490 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
491 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
492 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
495 type: OS::Heat::ResourceGroup
498 count: {get_param: ObjectStorageCount}
499 removal_policies: {get_param: ObjectStorageRemovalPolicies}
501 type: OS::TripleO::ObjectStorage
503 HashSuffix: {get_param: SwiftHashSuffix}
504 UpdateIdentifier: {get_param: UpdateIdentifier}
505 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
508 template: {get_param: ObjectStorageHostnameFormat}
510 '%stackname%': {get_param: 'OS::stack_name'}
511 ExtraConfig: {get_param: ExtraConfig}
512 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
513 CloudDomain: {get_param: CloudDomain}
514 ServerMetadata: {get_param: ServerMetadata}
516 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
517 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
519 CephStorageServiceChain:
520 type: OS::TripleO::Services
522 Services: {get_param: CephStorageServices}
523 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
524 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
525 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
528 type: OS::Heat::ResourceGroup
531 count: {get_param: CephStorageCount}
532 removal_policies: {get_param: CephStorageRemovalPolicies}
534 type: OS::TripleO::CephStorage
536 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
537 UpdateIdentifier: {get_param: UpdateIdentifier}
540 template: {get_param: CephStorageHostnameFormat}
542 '%stackname%': {get_param: 'OS::stack_name'}
543 ExtraConfig: {get_param: ExtraConfig}
544 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
545 CloudDomain: {get_param: CloudDomain}
546 ServerMetadata: {get_param: ServerMetadata}
548 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
549 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
552 type: OS::TripleO::Network::Ports::NetIpListMap
554 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
555 ExternalIpList: {get_attr: [Controller, external_ip_address]}
556 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
557 StorageIpList: {get_attr: [Controller, storage_ip_address]}
558 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
559 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
560 ManagementIpList: {get_attr: [Controller, management_ip_address]}
563 type: OS::TripleO::AllNodes::SoftwareConfig
568 - {get_attr: [Compute, hosts_entry]}
571 - {get_attr: [Controller, hosts_entry]}
574 - {get_attr: [BlockStorage, hosts_entry]}
577 - {get_attr: [ObjectStorage, hosts_entry]}
580 - {get_attr: [CephStorage, hosts_entry]}
581 controller_ips: {get_attr: [Controller, ip_address]}
582 controller_names: {get_attr: [Controller, hostname]}
583 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
584 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
585 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
586 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
587 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
588 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
589 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
590 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
591 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
592 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
593 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
594 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
595 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
596 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
597 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
598 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
599 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
600 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
601 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
602 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
603 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
604 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
605 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
606 ceph_mon_node_names: {get_attr: [Controller, hostname]}
607 DeployIdentifier: {get_param: DeployIdentifier}
608 UpdateIdentifier: {get_param: UpdateIdentifier}
611 type: OS::Heat::RandomString
615 MysqlClusterUniquePart:
616 type: OS::Heat::RandomString
621 type: OS::Heat::RandomString
624 salt: {get_param: RabbitCookieSalt}
627 type: OS::TripleO::DefaultPasswords
629 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
630 DefaultMysqlClusterPassword: {get_attr: [MysqlClusterUniquePart, value]}
631 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
632 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
633 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
634 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
636 # creates the network architecture
638 type: OS::TripleO::Network
641 type: OS::Neutron::Port
644 name: control_virtual_ip
645 network: {get_param: NeutronControlPlaneID}
646 fixed_ips: {get_param: ControlFixedIPs}
647 replacement_policy: AUTO
651 type: OS::TripleO::Network::Ports::RedisVipPort
653 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
654 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
655 PortName: redis_virtual_ip
656 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
659 # The public VIP is on the External net, falls back to ctlplane
662 type: OS::TripleO::Network::Ports::ExternalVipPort
664 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
665 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
666 PortName: public_virtual_ip
667 FixedIPs: {get_param: PublicVirtualFixedIPs}
669 InternalApiVirtualIP:
671 type: OS::TripleO::Network::Ports::InternalApiVipPort
673 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
674 PortName: internal_api_virtual_ip
675 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
679 type: OS::TripleO::Network::Ports::StorageVipPort
681 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
682 PortName: storage_virtual_ip
683 FixedIPs: {get_param: StorageVirtualFixedIPs}
685 StorageMgmtVirtualIP:
687 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
689 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
690 PortName: storage_management_virtual_ip
691 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
694 type: OS::TripleO::Network::Ports::NetVipMap
696 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
697 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
698 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
699 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
700 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
701 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
702 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
703 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
704 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
705 # No tenant or management VIP required
708 type: OS::TripleO::VipConfig
711 type: OS::Heat::StructuredDeployments
714 config: {get_resource: VipConfig}
715 servers: {get_attr: [Controller, attributes, nova_server_resource]}
717 # service VIP mappings
718 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
719 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
720 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
721 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
722 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
723 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
724 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
725 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
726 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
727 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
728 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
729 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
730 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
731 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
732 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
733 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
734 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
735 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
736 # direct configuration of Virtual IPs for each network
737 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
738 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
739 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
740 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
741 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
742 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
743 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
745 ControllerSwiftDeployment:
746 type: OS::Heat::StructuredDeployments
748 name: ControllerSwiftDeployment
749 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
750 servers: {get_attr: [Controller, attributes, nova_server_resource]}
752 ObjectStorageSwiftDeployment:
753 type: OS::Heat::StructuredDeployments
755 name: ObjectStorageSwiftDeployment
756 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
757 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
759 SwiftDevicesAndProxyConfig:
760 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
762 controller_swift_devices: {get_attr: [Controller, swift_device]}
763 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
764 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
766 ControllerAllNodesDeployment:
767 type: OS::Heat::StructuredDeployments
769 name: ControllerAllNodesDeployment
770 config: {get_attr: [allNodesConfig, config_id]}
771 servers: {get_attr: [Controller, attributes, nova_server_resource]}
773 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
774 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
776 ComputeAllNodesDeployment:
777 type: OS::Heat::StructuredDeployments
779 name: ComputeAllNodesDeployment
780 config: {get_attr: [allNodesConfig, config_id]}
781 servers: {get_attr: [Compute, attributes, nova_server_resource]}
783 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
784 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
786 BlockStorageAllNodesDeployment:
787 type: OS::Heat::StructuredDeployments
789 name: BlockStorageAllNodesDeployment
790 config: {get_attr: [allNodesConfig, config_id]}
791 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
793 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
794 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
796 ObjectStorageAllNodesDeployment:
797 type: OS::Heat::StructuredDeployments
799 name: ObjectStorageAllNodesDeployment
800 config: {get_attr: [allNodesConfig, config_id]}
801 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
803 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
804 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
806 CephStorageAllNodesDeployment:
807 type: OS::Heat::StructuredDeployments
809 name: CephStorageAllNodesDeployment
810 config: {get_attr: [allNodesConfig, config_id]}
811 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
813 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
814 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
816 # All Nodes Validations
817 AllNodesValidationConfig:
818 type: OS::TripleO::AllNodes::Validation
823 - - {get_attr: [Controller, resource.0.external_ip_address]}
824 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
825 - {get_attr: [Controller, resource.0.storage_ip_address]}
826 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
827 - {get_attr: [Controller, resource.0.tenant_ip_address]}
828 - {get_attr: [Controller, resource.0.management_ip_address]}
830 ControllerAllNodesValidationDeployment:
831 type: OS::Heat::StructuredDeployments
832 depends_on: ControllerAllNodesDeployment
834 name: ControllerAllNodesValidationDeployment
835 config: {get_resource: AllNodesValidationConfig}
836 servers: {get_attr: [Controller, attributes, nova_server_resource]}
838 ComputeAllNodesValidationDeployment:
839 type: OS::Heat::StructuredDeployments
840 depends_on: ComputeAllNodesDeployment
842 name: ComputeAllNodesValidationDeployment
843 config: {get_resource: AllNodesValidationConfig}
844 servers: {get_attr: [Compute, attributes, nova_server_resource]}
846 BlockStorageAllNodesValidationDeployment:
847 type: OS::Heat::StructuredDeployments
848 depends_on: BlockStorageAllNodesDeployment
850 name: BlockStorageAllNodesValidationDeployment
851 config: {get_resource: AllNodesValidationConfig}
852 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
854 ObjectStorageAllNodesValidationDeployment:
855 type: OS::Heat::StructuredDeployments
856 depends_on: ObjectStorageAllNodesDeployment
858 name: ObjectStorageAllNodesValidationDeployment
859 config: {get_resource: AllNodesValidationConfig}
860 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
862 CephStorageAllNodesValidationDeployment:
863 type: OS::Heat::StructuredDeployments
864 depends_on: CephStorageAllNodesDeployment
866 name: CephStorageAllNodesValidationDeployment
867 config: {get_resource: AllNodesValidationConfig}
868 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
871 type: OS::TripleO::Tasks::UpdateWorkflow
873 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
874 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
875 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
876 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
877 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
879 deploy_identifier: {get_param: DeployIdentifier}
880 update_identifier: {get_param: UpdateIdentifier}
882 # Optional ExtraConfig for all nodes - all roles are passed in here, but
883 # the nested template may configure each role differently (or not at all)
885 type: OS::TripleO::AllNodesExtraConfig
888 - ComputeAllNodesValidationDeployment
889 - BlockStorageAllNodesValidationDeployment
890 - ObjectStorageAllNodesValidationDeployment
891 - CephStorageAllNodesValidationDeployment
892 - ControllerAllNodesValidationDeployment
894 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
895 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
896 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
897 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
898 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
900 # Nested stack deployment runs after all other controller deployments
901 ControllerNodesPostDeployment:
902 type: OS::TripleO::ControllerPostDeployment
903 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
905 servers: {get_attr: [Controller, attributes, nova_server_resource]}
906 RoleData: {get_attr: [ControllerServiceChain, role_data]}
908 ComputeNodesPostDeployment:
909 type: OS::TripleO::ComputePostDeployment
910 depends_on: [ComputeAllNodesDeployment]
912 servers: {get_attr: [Compute, attributes, nova_server_resource]}
913 RoleData: {get_attr: [ComputeServiceChain, role_data]}
915 ObjectStorageNodesPostDeployment:
916 type: OS::TripleO::ObjectStoragePostDeployment
917 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
919 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
920 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
922 BlockStorageNodesPostDeployment:
923 type: OS::TripleO::BlockStoragePostDeployment
924 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
926 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
927 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
929 CephStorageNodesPostDeployment:
930 type: OS::TripleO::CephStoragePostDeployment
931 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
933 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
934 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
938 description: URL for the Overcloud Keystone service
939 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
941 description: Keystone Admin VIP endpoint
942 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
944 description: Controller VIP for public API endpoints
945 value: {get_attr: [VipMap, net_ip_map, external]}
947 description: VIP for Aodh API internal endpoint
948 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
949 CeilometerInternalVip:
950 description: VIP for Ceilometer API internal endpoint
951 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
953 description: VIP for Cinder API internal endpoint
954 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
956 description: VIP for Glance API internal endpoint
957 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
959 description: VIP for Gnocchi API internal endpoint
960 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
962 description: VIP for Heat API internal endpoint
963 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
965 description: VIP for Ironic API internal endpoint
966 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
968 description: VIP for Keystone API internal endpoint
969 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
971 description: VIP for Manila API internal endpoint
972 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
974 description: VIP for Neutron API internal endpoint
975 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
977 description: VIP for Nova API internal endpoint
978 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
980 description: VIP for Sahara API internal endpoint
981 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
983 description: VIP for Swift Proxy internal endpoint
984 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
987 Mapping of the resources with the needed info for their endpoints.
988 This includes the protocol used, the IP, port and also a full
989 representation of the URI.
990 value: {get_attr: [EndpointMap, endpoint_map]}
993 The content that should be appended to your /etc/hosts if you want to get
994 hostname-based access to the deployed nodes (useful for testing without
996 value: {get_attr: [allNodesConfig, hosts_entries]}
998 description: The services enabled on each role
1000 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
1001 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
1002 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
1003 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
1004 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}