1 heat_template_version: 2016-10-14
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)
16 default: overcloud.localdomain
17 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
20 default: overcloud.internalapi.localdomain
22 The DNS name of this cloud's internal API endpoint. E.g.
23 'ci-overcloud.internalapi.tripleo.org'.
26 default: overcloud.storage.localdomain
28 The DNS name of this cloud's storage endpoint. E.g.
29 'ci-overcloud.storage.tripleo.org'.
31 CloudNameStorageManagement:
32 default: overcloud.storagemgmt.localdomain
34 The DNS name of this cloud's storage management endpoint. E.g.
35 'ci-overcloud.storagemgmt.tripleo.org'.
38 default: overcloud.management.localdomain
40 The DNS name of this cloud's storage management endpoint. E.g.
41 'ci-overcloud.management.tripleo.org'.
45 description: Should be used for arbitrary ips.
47 InternalApiVirtualFixedIPs:
50 Control the IP allocation for the InternalApiVirtualInterface port. E.g.
51 [{'ip_address':'1.2.3.4'}]
53 NeutronControlPlaneID:
56 description: Neutron ID or name for ctlplane network.
57 NeutronPublicInterface:
59 description: What interface to bridge onto br-ex for network nodes.
61 PublicVirtualFixedIPs:
64 Control the IP allocation for the PublicVirtualInterface port. E.g.
65 [{'ip_address':'1.2.3.4'}]
70 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
71 StorageVirtualFixedIPs:
74 Control the IP allocation for the StorageVirtualInterface port. E.g.
75 [{'ip_address':'1.2.3.4'}]
77 StorageMgmtVirtualFixedIPs:
80 Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
81 [{'ip_address':'1.2.3.4'}]
86 Control the IP allocation for the virtual IP used by Redis. E.g.
87 [{'ip_address':'1.2.3.4'}]
90 default: 'localdomain'
93 The DNS domain used for the hosts. This should match the dhcp_domain
94 configured in the Undercloud neutron. Defaults to localdomain.
98 Extra properties or metadata passed to Nova for the created nodes in
99 the overcloud. It's accessible via the Nova metadata API.
102 # Controller-specific params
106 controllerExtraConfig:
109 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
114 Additional configuration to inject into the cluster. The format required
115 may be implementation specific, e.g puppet hieradata. Any role specific
116 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
119 # Compute-specific params
123 HypervisorNeutronPhysicalBridge:
126 An OVS bridge to create on each hypervisor. This defaults to br-ex the
127 same as the control plane nodes, as we have a uniform configuration of
128 the openvswitch agent. Typically should not need to be changed.
130 HypervisorNeutronPublicInterface:
132 description: What interface to add to the HypervisorNeutronPhysicalBridge.
137 - OS::TripleO::Services::CACerts
138 - OS::TripleO::Services::CephMon
139 - OS::TripleO::Services::CephExternal
140 - OS::TripleO::Services::CinderApi
141 - OS::TripleO::Services::CinderBackup
142 - OS::TripleO::Services::CinderScheduler
143 - OS::TripleO::Services::CinderVolume
144 - OS::TripleO::Services::Core
145 - OS::TripleO::Services::Kernel
146 - OS::TripleO::Services::Keystone
147 - OS::TripleO::Services::GlanceApi
148 - OS::TripleO::Services::GlanceRegistry
149 - OS::TripleO::Services::HeatApi
150 - OS::TripleO::Services::HeatApiCfn
151 - OS::TripleO::Services::HeatApiCloudwatch
152 - OS::TripleO::Services::HeatEngine
153 - OS::TripleO::Services::MySQL
154 - OS::TripleO::Services::NeutronDhcpAgent
155 - OS::TripleO::Services::NeutronL3Agent
156 - OS::TripleO::Services::NeutronMetadataAgent
157 - OS::TripleO::Services::NeutronApi
158 - OS::TripleO::Services::NeutronCorePlugin
159 - OS::TripleO::Services::NeutronOvsAgent
160 - OS::TripleO::Services::RabbitMQ
161 - OS::TripleO::Services::HAproxy
162 - OS::TripleO::Services::Keepalived
163 - OS::TripleO::Services::Memcached
164 - OS::TripleO::Services::Pacemaker
165 - OS::TripleO::Services::Redis
166 - OS::TripleO::Services::NovaConductor
167 - OS::TripleO::Services::MongoDb
168 - OS::TripleO::Services::NovaApi
169 - OS::TripleO::Services::NovaScheduler
170 - OS::TripleO::Services::NovaConsoleauth
171 - OS::TripleO::Services::NovaVncproxy
172 - OS::TripleO::Services::Ntp
173 - OS::TripleO::Services::SwiftProxy
174 - OS::TripleO::Services::SwiftStorage
175 - OS::TripleO::Services::SwiftRingBuilder
176 - OS::TripleO::Services::Snmp
177 - OS::TripleO::Services::Timezone
178 - OS::TripleO::Services::CeilometerApi
179 - OS::TripleO::Services::CeilometerCollector
180 - OS::TripleO::Services::CeilometerExpirer
181 - OS::TripleO::Services::CeilometerAgentCentral
182 - OS::TripleO::Services::CeilometerAgentNotification
183 - OS::TripleO::Services::Horizon
184 - OS::TripleO::Services::GnocchiApi
185 - OS::TripleO::Services::GnocchiMetricd
186 - OS::TripleO::Services::GnocchiStatsd
187 - OS::Tripleo::Services::ManilaApi
188 - OS::Tripleo::Services::ManilaScheduler
189 - OS::Tripleo::Services::ManilaShare
190 - OS::TripleO::Services::AodhApi
191 - OS::TripleO::Services::AodhEvaluator
192 - OS::TripleO::Services::AodhNotifier
193 - OS::TripleO::Services::AodhListener
194 - OS::TripleO::Services::SaharaApi
195 - OS::TripleO::Services::SaharaEngine
196 - OS::TripleO::Services::IronicApi
197 - OS::TripleO::Services::IronicConductor
198 - OS::TripleO::Services::NovaIronic
199 - OS::TripleO::Services::TripleoPackages
200 - OS::TripleO::Services::TripleoFirewall
201 - OS::TripleO::Services::OpenDaylight
202 - OS::TripleO::Services::SensuClient
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 Controllers.
206 type: comma_delimited_list
210 - OS::TripleO::Services::CACerts
211 - OS::TripleO::Services::CephClient
212 - OS::TripleO::Services::CephExternal
213 - OS::TripleO::Services::Timezone
214 - OS::TripleO::Services::Ntp
215 - OS::TripleO::Services::Snmp
216 - OS::TripleO::Services::NovaCompute
217 - OS::TripleO::Services::NovaLibvirt
218 - OS::TripleO::Services::Kernel
219 - OS::TripleO::Services::ComputeNeutronCorePlugin
220 - OS::TripleO::Services::ComputeNeutronOvsAgent
221 - OS::TripleO::Services::ComputeCeilometerAgent
222 - OS::TripleO::Services::ComputeNeutronL3Agent
223 - OS::TripleO::Services::ComputeNeutronMetadataAgent
224 - OS::TripleO::Services::TripleoPackages
225 - OS::TripleO::Services::TripleoFirewall
226 - OS::TripleO::Services::NeutronSriovAgent
227 - OS::TripleO::Services::OpenDaylightOvs
228 - OS::TripleO::Services::SensuClient
229 description: A list of service resources (configured in the Heat
230 resource_registry) which represent nested stacks
231 for each service that should get installed on the Compute Nodes.
232 type: comma_delimited_list
234 # Block storage specific parameters
238 BlockStorageExtraConfig:
241 BlockStorage specific configuration to inject into the cluster. Same
242 structure as ExtraConfig.
244 BlockStorageServices:
246 - OS::TripleO::Services::CACerts
247 - OS::TripleO::Services::CinderVolume
248 - OS::TripleO::Services::Kernel
249 - OS::TripleO::Services::Ntp
250 - OS::TripleO::Services::Timezone
251 - OS::TripleO::Services::Snmp
252 - OS::TripleO::Services::TripleoPackages
253 - OS::TripleO::Services::TripleoFirewall
254 - OS::TripleO::Services::SensuClient
255 description: A list of service resources (configured in the Heat
256 resource_registry) which represent nested stacks
257 for each service that should get installed on the BlockStorage nodes.
258 type: comma_delimited_list
260 # Object storage specific parameters
264 ObjectStorageExtraConfig:
267 ObjectStorage specific configuration to inject into the cluster. Same
268 structure as ExtraConfig.
270 ObjectStorageServices:
272 - OS::TripleO::Services::CACerts
273 - OS::TripleO::Services::Kernel
274 - OS::TripleO::Services::Ntp
275 - OS::TripleO::Services::SwiftStorage
276 - OS::TripleO::Services::SwiftRingBuilder
277 - OS::TripleO::Services::Snmp
278 - OS::TripleO::Services::Timezone
279 - OS::TripleO::Services::TripleoPackages
280 - OS::TripleO::Services::TripleoFirewall
281 - OS::TripleO::Services::SensuClient
282 description: A list of service resources (configured in the Heat
283 resource_registry) which represent nested stacks
284 for each service that should get installed on the ObjectStorage nodes.
285 Note this role currently only supports steps 2, 3 and 4 configuration.
286 type: comma_delimited_list
289 # Ceph storage specific parameters
293 CephStorageExtraConfig:
296 CephStorage specific configuration to inject into the cluster. Same
297 structure as ExtraConfig.
301 - OS::TripleO::Services::CACerts
302 - OS::TripleO::Services::CephOSD
303 - OS::TripleO::Services::Kernel
304 - OS::TripleO::Services::Ntp
305 - OS::TripleO::Services::Timezone
306 - OS::TripleO::Services::TripleoPackages
307 - OS::TripleO::Services::TripleoFirewall
308 - OS::TripleO::Services::SensuClient
309 description: A list of service resources (configured in the Heat
310 resource_registry) which represent nested stacks
311 for each service that should get installed on the CephStorage nodes.
312 type: comma_delimited_list
314 # Hostname format for each role
315 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
316 # and %stackname% is replaced with OS::stack_name in the template below.
317 # If you want to use the heat generated names, pass '' (empty string).
318 ControllerHostnameFormat:
320 description: Format for Controller node hostnames
321 default: '%stackname%-controller-%index%'
322 ComputeHostnameFormat:
324 description: Format for Compute node hostnames
325 default: '%stackname%-novacompute-%index%'
326 BlockStorageHostnameFormat:
328 description: Format for BlockStorage node hostnames
329 default: '%stackname%-blockstorage-%index%'
330 ObjectStorageHostnameFormat:
332 description: Format for SwiftStorage node hostnames
333 default: '%stackname%-objectstorage-%index%'
334 CephStorageHostnameFormat:
336 description: Format for CephStorage node hostnames
337 default: '%stackname%-cephstorage-%index%'
339 # Identifiers to trigger tasks on nodes
344 Setting to a previously unused value during stack-update will trigger
345 package update on all nodes
350 Setting this to a unique value will re-run any deployment tasks which
351 perform configuration on a Heat stack-update.
353 # If you want to remove a specific node from a resource group, you can pass
354 # the node name or id as a <Group>RemovalPolicies parameter, for example:
355 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
356 ControllerRemovalPolicies:
360 List of resources to be removed from ControllerResourceGroup when
361 doing an update which requires removal of specific resources.
362 ComputeRemovalPolicies:
366 List of resources to be removed from ComputeResourceGroup when
367 doing an update which requires removal of specific resources.
368 BlockStorageRemovalPolicies:
372 List of resources to be removed from BlockStorageResourceGroup when
373 doing an update which requires removal of specific resources.
374 ObjectStorageRemovalPolicies:
378 List of resources to be removed from ObjectStorageResourceGroup when
379 doing an update which requires removal of specific resources.
380 CephStorageRemovalPolicies:
384 List of resources to be removed from CephStorageResourceGroup when
385 doing an update which requires removal of specific resources.
389 description: Do not use deprecated params, they will be removed.
391 - controllerExtraConfig
396 HeatAuthEncryptionKey:
397 type: OS::Heat::RandomString
400 type: OS::Heat::RandomString
405 type: OS::Heat::RandomString
410 type: OS::TripleO::ServiceNetMap
413 type: OS::TripleO::EndpointMap
416 external: {get_param: CloudName}
417 internal_api: {get_param: CloudNameInternal}
418 storage: {get_param: CloudNameStorage}
419 storage_mgmt: {get_param: CloudNameStorageManagement}
420 management: {get_param: CloudNameManagement}
421 NetIpMap: {get_attr: [VipMap, net_ip_map]}
422 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
424 ControllerServiceChain:
425 type: OS::TripleO::Services
427 Services: {get_param: ControllerServices}
428 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
429 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
430 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
433 type: OS::Heat::ResourceGroup
436 count: {get_param: ControllerCount}
437 removal_policies: {get_param: ControllerRemovalPolicies}
439 type: OS::TripleO::Controller
441 CloudDomain: {get_param: CloudDomain}
442 controllerExtraConfig: {get_param: controllerExtraConfig}
443 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
444 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
447 template: {get_param: ControllerHostnameFormat}
449 '%stackname%': {get_param: 'OS::stack_name'}
451 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
452 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
453 MonitoringSubscriptions: {get_attr: [ControllerServiceChain, role_data, monitoring_subscriptions]}
456 type: OS::TripleO::Services
458 Services: {get_param: ComputeServices}
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: ComputeCount}
468 removal_policies: {get_param: ComputeRemovalPolicies}
470 type: OS::TripleO::Compute
472 CloudDomain: {get_param: CloudDomain}
473 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
474 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
475 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
476 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
479 template: {get_param: ComputeHostnameFormat}
481 '%stackname%': {get_param: 'OS::stack_name'}
483 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
484 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
485 MonitoringSubscriptions: {get_attr: [ComputeServiceChain, role_data, monitoring_subscriptions]}
487 BlockStorageServiceChain:
488 type: OS::TripleO::Services
490 Services: {get_param: BlockStorageServices}
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: BlockStorageCount}
500 removal_policies: {get_param: BlockStorageRemovalPolicies}
502 type: OS::TripleO::BlockStorage
504 UpdateIdentifier: {get_param: UpdateIdentifier}
507 template: {get_param: BlockStorageHostnameFormat}
509 '%stackname%': {get_param: 'OS::stack_name'}
510 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
511 ExtraConfig: {get_param: ExtraConfig}
512 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
513 CloudDomain: {get_param: CloudDomain}
514 ServerMetadata: {get_param: ServerMetadata}
516 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
517 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
518 MonitoringSubscriptions: {get_attr: [BlockStorageServiceChain, role_data, monitoring_subscriptions]}
520 ObjectStorageServiceChain:
521 type: OS::TripleO::Services
523 Services: {get_param: ObjectStorageServices}
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: ObjectStorageCount}
533 removal_policies: {get_param: ObjectStorageRemovalPolicies}
535 type: OS::TripleO::ObjectStorage
537 UpdateIdentifier: {get_param: UpdateIdentifier}
538 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
541 template: {get_param: ObjectStorageHostnameFormat}
543 '%stackname%': {get_param: 'OS::stack_name'}
544 ExtraConfig: {get_param: ExtraConfig}
545 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
546 CloudDomain: {get_param: CloudDomain}
547 ServerMetadata: {get_param: ServerMetadata}
549 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
550 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
551 MonitoringSubscriptions: {get_attr: [ObjectStorageServiceChain, role_data, monitoring_subscriptions]}
553 CephStorageServiceChain:
554 type: OS::TripleO::Services
556 Services: {get_param: CephStorageServices}
557 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
558 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
559 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
562 type: OS::Heat::ResourceGroup
565 count: {get_param: CephStorageCount}
566 removal_policies: {get_param: CephStorageRemovalPolicies}
568 type: OS::TripleO::CephStorage
570 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
571 UpdateIdentifier: {get_param: UpdateIdentifier}
574 template: {get_param: CephStorageHostnameFormat}
576 '%stackname%': {get_param: 'OS::stack_name'}
577 ExtraConfig: {get_param: ExtraConfig}
578 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
579 CloudDomain: {get_param: CloudDomain}
580 ServerMetadata: {get_param: ServerMetadata}
582 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
583 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
584 MonitoringSubscriptions: {get_attr: [CephStorageServiceChain, role_data, monitoring_subscriptions]}
587 type: OS::TripleO::Network::Ports::NetIpListMap
589 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
590 ExternalIpList: {get_attr: [Controller, external_ip_address]}
591 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
592 StorageIpList: {get_attr: [Controller, storage_ip_address]}
593 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
594 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
595 ManagementIpList: {get_attr: [Controller, management_ip_address]}
596 EnabledServices: {get_attr: [ControllerServiceChain, role_data, service_names]}
597 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
598 ServiceHostnameList: {get_attr: [Controller, hostname]}
601 type: OS::TripleO::Network::Ports::NetIpListMap
603 ControlPlaneIpList: {get_attr: [Compute, ip_address]}
604 ExternalIpList: {get_attr: [Compute, external_ip_address]}
605 InternalApiIpList: {get_attr: [Compute, internal_api_ip_address]}
606 StorageIpList: {get_attr: [Compute, storage_ip_address]}
607 StorageMgmtIpList: {get_attr: [Compute, storage_mgmt_ip_address]}
608 TenantIpList: {get_attr: [Compute, tenant_ip_address]}
609 ManagementIpList: {get_attr: [Compute, management_ip_address]}
610 EnabledServices: {get_attr: [ComputeServiceChain, role_data, service_names]}
611 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
612 ServiceHostnameList: {get_attr: [Compute, hostname]}
614 BlockStorageIpListMap:
615 type: OS::TripleO::Network::Ports::NetIpListMap
617 ControlPlaneIpList: {get_attr: [BlockStorage, ip_address]}
618 ExternalIpList: {get_attr: [BlockStorage, external_ip_address]}
619 InternalApiIpList: {get_attr: [BlockStorage, internal_api_ip_address]}
620 StorageIpList: {get_attr: [BlockStorage, storage_ip_address]}
621 StorageMgmtIpList: {get_attr: [BlockStorage, storage_mgmt_ip_address]}
622 TenantIpList: {get_attr: [BlockStorage, tenant_ip_address]}
623 ManagementIpList: {get_attr: [BlockStorage, management_ip_address]}
624 EnabledServices: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
625 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
626 ServiceHostnameList: {get_attr: [BlockStorage, hostname]}
628 ObjectStorageIpListMap:
629 type: OS::TripleO::Network::Ports::NetIpListMap
631 ControlPlaneIpList: {get_attr: [ObjectStorage, ip_address]}
632 ExternalIpList: {get_attr: [ObjectStorage, external_ip_address]}
633 InternalApiIpList: {get_attr: [ObjectStorage, internal_api_ip_address]}
634 StorageIpList: {get_attr: [ObjectStorage, storage_ip_address]}
635 StorageMgmtIpList: {get_attr: [ObjectStorage, storage_mgmt_ip_address]}
636 TenantIpList: {get_attr: [ObjectStorage, tenant_ip_address]}
637 ManagementIpList: {get_attr: [ObjectStorage, management_ip_address]}
638 EnabledServices: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
639 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
640 ServiceHostnameList: {get_attr: [ObjectStorage, hostname]}
642 CephStorageIpListMap:
643 type: OS::TripleO::Network::Ports::NetIpListMap
645 ControlPlaneIpList: {get_attr: [CephStorage, ip_address]}
646 ExternalIpList: {get_attr: [CephStorage, external_ip_address]}
647 InternalApiIpList: {get_attr: [CephStorage, internal_api_ip_address]}
648 StorageIpList: {get_attr: [CephStorage, storage_ip_address]}
649 StorageMgmtIpList: {get_attr: [CephStorage, storage_mgmt_ip_address]}
650 TenantIpList: {get_attr: [CephStorage, tenant_ip_address]}
651 ManagementIpList: {get_attr: [CephStorage, management_ip_address]}
652 EnabledServices: {get_attr: [CephStorageServiceChain, role_data, service_names]}
653 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
654 ServiceHostnameList: {get_attr: [CephStorage, hostname]}
657 type: OS::TripleO::AllNodes::SoftwareConfig
662 - {get_attr: [Compute, hosts_entry]}
665 - {get_attr: [Controller, hosts_entry]}
668 - {get_attr: [BlockStorage, hosts_entry]}
671 - {get_attr: [ObjectStorage, hosts_entry]}
674 - {get_attr: [CephStorage, hosts_entry]}
678 - {get_attr: [ControllerServiceChain, role_data, service_names]}
679 - {get_attr: [ComputeServiceChain, role_data, service_names]}
680 - {get_attr: [BlockStorageServiceChain, role_data, service_names]}
681 - {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
682 - {get_attr: [CephStorageServiceChain, role_data, service_names]}
683 controller_ips: {get_attr: [Controller, ip_address]}
684 controller_names: {get_attr: [Controller, hostname]}
686 # Note (shardy) this somewhat complex yaql may be replaced
687 # with a map_deep_merge function in ocata. It merges the
688 # list of maps, but appends to colliding lists when a service
689 # is deployed on more than one role
691 expression: dict($.data.l.where($ != null).selectMany($.items()).groupBy($[0], $[1], [$[0], $[1].flatten()]))
694 - {get_attr: [ControllerIpListMap, service_ips]}
695 - {get_attr: [ComputeIpListMap, service_ips]}
696 - {get_attr: [BlockStorageIpListMap, service_ips]}
697 - {get_attr: [ObjectStorageIpListMap, service_ips]}
698 - {get_attr: [CephStorageIpListMap, service_ips]}
701 expression: dict($.data.l.where($ != null).selectMany($.items()).groupBy($[0], $[1], [$[0], $[1].flatten()]))
704 - {get_attr: [ControllerIpListMap, service_hostnames]}
705 - {get_attr: [ComputeIpListMap, service_hostnames]}
706 - {get_attr: [BlockStorageIpListMap, service_hostnames]}
707 - {get_attr: [ObjectStorageIpListMap, service_hostnames]}
708 - {get_attr: [CephStorageIpListMap, service_hostnames]}
709 # FIXME(shardy): These require further work to move into service_ips
710 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
711 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
712 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
713 NetVipMap: {get_attr: [VipMap, net_ip_map]}
714 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
715 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
716 DeployIdentifier: {get_param: DeployIdentifier}
717 UpdateIdentifier: {get_param: UpdateIdentifier}
720 type: OS::Heat::RandomString
725 type: OS::Heat::RandomString
728 salt: {get_param: RabbitCookieSalt}
731 type: OS::TripleO::DefaultPasswords
733 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
734 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
735 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
736 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
737 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
739 # creates the network architecture
741 type: OS::TripleO::Network
744 type: OS::Neutron::Port
747 name: control_virtual_ip
748 network: {get_param: NeutronControlPlaneID}
749 fixed_ips: {get_param: ControlFixedIPs}
750 replacement_policy: AUTO
754 type: OS::TripleO::Network::Ports::RedisVipPort
756 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
757 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
758 PortName: redis_virtual_ip
759 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
761 FixedIPs: {get_param: RedisVirtualFixedIPs}
763 # The public VIP is on the External net, falls back to ctlplane
766 type: OS::TripleO::Network::Ports::ExternalVipPort
768 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
769 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
770 PortName: public_virtual_ip
771 FixedIPs: {get_param: PublicVirtualFixedIPs}
773 InternalApiVirtualIP:
775 type: OS::TripleO::Network::Ports::InternalApiVipPort
777 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
778 PortName: internal_api_virtual_ip
779 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
783 type: OS::TripleO::Network::Ports::StorageVipPort
785 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
786 PortName: storage_virtual_ip
787 FixedIPs: {get_param: StorageVirtualFixedIPs}
789 StorageMgmtVirtualIP:
791 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
793 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
794 PortName: storage_management_virtual_ip
795 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
798 type: OS::TripleO::Network::Ports::NetVipMap
800 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
801 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
802 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
803 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
804 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
805 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
806 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
807 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
808 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
809 # No tenant or management VIP required
811 ControllerSwiftDeployment:
812 type: OS::Heat::StructuredDeployments
814 name: ControllerSwiftDeployment
815 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
816 servers: {get_attr: [Controller, attributes, nova_server_resource]}
818 ObjectStorageSwiftDeployment:
819 type: OS::Heat::StructuredDeployments
821 name: ObjectStorageSwiftDeployment
822 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
823 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
825 SwiftDevicesAndProxyConfig:
826 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
828 controller_swift_devices: {get_attr: [Controller, swift_device]}
829 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
831 ControllerAllNodesDeployment:
832 type: OS::Heat::StructuredDeployments
834 name: ControllerAllNodesDeployment
835 config: {get_attr: [allNodesConfig, config_id]}
836 servers: {get_attr: [Controller, attributes, nova_server_resource]}
838 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
839 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
841 ComputeAllNodesDeployment:
842 type: OS::Heat::StructuredDeployments
844 name: ComputeAllNodesDeployment
845 config: {get_attr: [allNodesConfig, config_id]}
846 servers: {get_attr: [Compute, attributes, nova_server_resource]}
848 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
849 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
851 BlockStorageAllNodesDeployment:
852 type: OS::Heat::StructuredDeployments
854 name: BlockStorageAllNodesDeployment
855 config: {get_attr: [allNodesConfig, config_id]}
856 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
858 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
859 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
861 ObjectStorageAllNodesDeployment:
862 type: OS::Heat::StructuredDeployments
864 name: ObjectStorageAllNodesDeployment
865 config: {get_attr: [allNodesConfig, config_id]}
866 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
868 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
869 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
871 CephStorageAllNodesDeployment:
872 type: OS::Heat::StructuredDeployments
874 name: CephStorageAllNodesDeployment
875 config: {get_attr: [allNodesConfig, config_id]}
876 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
878 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
879 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
881 # All Nodes Validations
882 AllNodesValidationConfig:
883 type: OS::TripleO::AllNodes::Validation
888 - - {get_attr: [Controller, resource.0.external_ip_address]}
889 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
890 - {get_attr: [Controller, resource.0.storage_ip_address]}
891 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
892 - {get_attr: [Controller, resource.0.tenant_ip_address]}
893 - {get_attr: [Controller, resource.0.management_ip_address]}
895 ControllerAllNodesValidationDeployment:
896 type: OS::Heat::StructuredDeployments
897 depends_on: ControllerAllNodesDeployment
899 name: ControllerAllNodesValidationDeployment
900 config: {get_resource: AllNodesValidationConfig}
901 servers: {get_attr: [Controller, attributes, nova_server_resource]}
903 ComputeAllNodesValidationDeployment:
904 type: OS::Heat::StructuredDeployments
905 depends_on: ComputeAllNodesDeployment
907 name: ComputeAllNodesValidationDeployment
908 config: {get_resource: AllNodesValidationConfig}
909 servers: {get_attr: [Compute, attributes, nova_server_resource]}
911 BlockStorageAllNodesValidationDeployment:
912 type: OS::Heat::StructuredDeployments
913 depends_on: BlockStorageAllNodesDeployment
915 name: BlockStorageAllNodesValidationDeployment
916 config: {get_resource: AllNodesValidationConfig}
917 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
919 ObjectStorageAllNodesValidationDeployment:
920 type: OS::Heat::StructuredDeployments
921 depends_on: ObjectStorageAllNodesDeployment
923 name: ObjectStorageAllNodesValidationDeployment
924 config: {get_resource: AllNodesValidationConfig}
925 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
927 CephStorageAllNodesValidationDeployment:
928 type: OS::Heat::StructuredDeployments
929 depends_on: CephStorageAllNodesDeployment
931 name: CephStorageAllNodesValidationDeployment
932 config: {get_resource: AllNodesValidationConfig}
933 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
936 type: OS::TripleO::Tasks::UpdateWorkflow
938 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
939 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
940 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
941 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
942 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
944 deploy_identifier: {get_param: DeployIdentifier}
945 update_identifier: {get_param: UpdateIdentifier}
947 # Optional ExtraConfig for all nodes - all roles are passed in here, but
948 # the nested template may configure each role differently (or not at all)
950 type: OS::TripleO::AllNodesExtraConfig
953 - ComputeAllNodesValidationDeployment
954 - BlockStorageAllNodesValidationDeployment
955 - ObjectStorageAllNodesValidationDeployment
956 - CephStorageAllNodesValidationDeployment
957 - ControllerAllNodesValidationDeployment
959 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
960 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
961 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
962 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
963 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
965 # Nested stack deployment runs after all other controller deployments
966 ControllerNodesPostDeployment:
967 type: OS::TripleO::ControllerPostDeployment
968 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
970 servers: {get_attr: [Controller, attributes, nova_server_resource]}
971 RoleData: {get_attr: [ControllerServiceChain, role_data]}
973 ComputeNodesPostDeployment:
974 type: OS::TripleO::ComputePostDeployment
975 depends_on: [ComputeAllNodesDeployment]
977 servers: {get_attr: [Compute, attributes, nova_server_resource]}
978 RoleData: {get_attr: [ComputeServiceChain, role_data]}
980 ObjectStorageNodesPostDeployment:
981 type: OS::TripleO::ObjectStoragePostDeployment
982 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
984 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
985 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
987 BlockStorageNodesPostDeployment:
988 type: OS::TripleO::BlockStoragePostDeployment
989 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
991 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
992 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
994 CephStorageNodesPostDeployment:
995 type: OS::TripleO::CephStoragePostDeployment
996 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
998 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
999 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
1004 description: Asserts that the keystone endpoints have been provisioned.
1007 description: URL for the Overcloud Keystone service
1008 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
1010 description: Keystone Admin VIP endpoint
1011 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
1013 description: Controller VIP for public API endpoints
1014 value: {get_attr: [VipMap, net_ip_map, external]}
1016 description: VIP for Aodh API internal endpoint
1017 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
1018 CeilometerInternalVip:
1019 description: VIP for Ceilometer API internal endpoint
1020 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
1022 description: VIP for Cinder API internal endpoint
1023 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
1025 description: VIP for Glance API internal endpoint
1026 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
1028 description: VIP for Gnocchi API internal endpoint
1029 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
1031 description: VIP for Heat API internal endpoint
1032 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
1034 description: VIP for Ironic API internal endpoint
1035 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
1036 KeystoneInternalVip:
1037 description: VIP for Keystone API internal endpoint
1038 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
1040 description: VIP for Manila API internal endpoint
1041 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
1043 description: VIP for Neutron API internal endpoint
1044 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
1046 description: VIP for Nova API internal endpoint
1047 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
1048 OpenDaylightInternalVip:
1049 description: VIP for OpenDaylight API internal endpoint
1050 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
1052 description: VIP for Sahara API internal endpoint
1053 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
1055 description: VIP for Swift Proxy internal endpoint
1056 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
1059 Mapping of the resources with the needed info for their endpoints.
1060 This includes the protocol used, the IP, port and also a full
1061 representation of the URI.
1062 value: {get_attr: [EndpointMap, endpoint_map]}
1065 The content that should be appended to your /etc/hosts if you want to get
1066 hostname-based access to the deployed nodes (useful for testing without
1068 value: {get_attr: [allNodesConfig, hosts_entries]}
1070 description: The services enabled on each role
1072 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
1073 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
1074 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
1075 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
1076 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}