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 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
444 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
445 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
448 template: {get_param: ControllerHostnameFormat}
450 '%stackname%': {get_param: 'OS::stack_name'}
452 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
453 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
454 MonitoringSubscriptions: {get_attr: [ControllerServiceChain, role_data, monitoring_subscriptions]}
457 type: OS::TripleO::Services
459 Services: {get_param: ComputeServices}
460 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
461 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
462 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
465 type: OS::Heat::ResourceGroup
468 count: {get_param: ComputeCount}
469 removal_policies: {get_param: ComputeRemovalPolicies}
471 type: OS::TripleO::Compute
473 CloudDomain: {get_param: CloudDomain}
474 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
475 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
476 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
477 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
480 template: {get_param: ComputeHostnameFormat}
482 '%stackname%': {get_param: 'OS::stack_name'}
484 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
485 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
486 MonitoringSubscriptions: {get_attr: [ComputeServiceChain, role_data, monitoring_subscriptions]}
488 BlockStorageServiceChain:
489 type: OS::TripleO::Services
491 Services: {get_param: BlockStorageServices}
492 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
493 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
494 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
497 type: OS::Heat::ResourceGroup
500 count: {get_param: BlockStorageCount}
501 removal_policies: {get_param: BlockStorageRemovalPolicies}
503 type: OS::TripleO::BlockStorage
505 UpdateIdentifier: {get_param: UpdateIdentifier}
508 template: {get_param: BlockStorageHostnameFormat}
510 '%stackname%': {get_param: 'OS::stack_name'}
511 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
512 ExtraConfig: {get_param: ExtraConfig}
513 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
514 CloudDomain: {get_param: CloudDomain}
515 ServerMetadata: {get_param: ServerMetadata}
517 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
518 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
519 MonitoringSubscriptions: {get_attr: [BlockStorageServiceChain, role_data, monitoring_subscriptions]}
521 ObjectStorageServiceChain:
522 type: OS::TripleO::Services
524 Services: {get_param: ObjectStorageServices}
525 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
526 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
527 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
530 type: OS::Heat::ResourceGroup
533 count: {get_param: ObjectStorageCount}
534 removal_policies: {get_param: ObjectStorageRemovalPolicies}
536 type: OS::TripleO::ObjectStorage
538 UpdateIdentifier: {get_param: UpdateIdentifier}
539 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
542 template: {get_param: ObjectStorageHostnameFormat}
544 '%stackname%': {get_param: 'OS::stack_name'}
545 ExtraConfig: {get_param: ExtraConfig}
546 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
547 CloudDomain: {get_param: CloudDomain}
548 ServerMetadata: {get_param: ServerMetadata}
550 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
551 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
552 MonitoringSubscriptions: {get_attr: [ObjectStorageServiceChain, role_data, monitoring_subscriptions]}
554 CephStorageServiceChain:
555 type: OS::TripleO::Services
557 Services: {get_param: CephStorageServices}
558 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
559 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
560 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
563 type: OS::Heat::ResourceGroup
566 count: {get_param: CephStorageCount}
567 removal_policies: {get_param: CephStorageRemovalPolicies}
569 type: OS::TripleO::CephStorage
571 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
572 UpdateIdentifier: {get_param: UpdateIdentifier}
575 template: {get_param: CephStorageHostnameFormat}
577 '%stackname%': {get_param: 'OS::stack_name'}
578 ExtraConfig: {get_param: ExtraConfig}
579 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
580 CloudDomain: {get_param: CloudDomain}
581 ServerMetadata: {get_param: ServerMetadata}
583 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
584 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
585 MonitoringSubscriptions: {get_attr: [CephStorageServiceChain, role_data, monitoring_subscriptions]}
588 type: OS::TripleO::Network::Ports::NetIpListMap
590 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
591 ExternalIpList: {get_attr: [Controller, external_ip_address]}
592 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
593 StorageIpList: {get_attr: [Controller, storage_ip_address]}
594 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
595 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
596 ManagementIpList: {get_attr: [Controller, management_ip_address]}
597 EnabledServices: {get_attr: [ControllerServiceChain, role_data, service_names]}
598 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
599 ServiceHostnameList: {get_attr: [Controller, hostname]}
602 type: OS::TripleO::Network::Ports::NetIpListMap
604 ControlPlaneIpList: {get_attr: [Compute, ip_address]}
605 ExternalIpList: {get_attr: [Compute, external_ip_address]}
606 InternalApiIpList: {get_attr: [Compute, internal_api_ip_address]}
607 StorageIpList: {get_attr: [Compute, storage_ip_address]}
608 StorageMgmtIpList: {get_attr: [Compute, storage_mgmt_ip_address]}
609 TenantIpList: {get_attr: [Compute, tenant_ip_address]}
610 ManagementIpList: {get_attr: [Compute, management_ip_address]}
611 EnabledServices: {get_attr: [ComputeServiceChain, role_data, service_names]}
612 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
613 ServiceHostnameList: {get_attr: [Compute, hostname]}
615 BlockStorageIpListMap:
616 type: OS::TripleO::Network::Ports::NetIpListMap
618 ControlPlaneIpList: {get_attr: [BlockStorage, ip_address]}
619 ExternalIpList: {get_attr: [BlockStorage, external_ip_address]}
620 InternalApiIpList: {get_attr: [BlockStorage, internal_api_ip_address]}
621 StorageIpList: {get_attr: [BlockStorage, storage_ip_address]}
622 StorageMgmtIpList: {get_attr: [BlockStorage, storage_mgmt_ip_address]}
623 TenantIpList: {get_attr: [BlockStorage, tenant_ip_address]}
624 ManagementIpList: {get_attr: [BlockStorage, management_ip_address]}
625 EnabledServices: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
626 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
627 ServiceHostnameList: {get_attr: [BlockStorage, hostname]}
629 ObjectStorageIpListMap:
630 type: OS::TripleO::Network::Ports::NetIpListMap
632 ControlPlaneIpList: {get_attr: [ObjectStorage, ip_address]}
633 ExternalIpList: {get_attr: [ObjectStorage, external_ip_address]}
634 InternalApiIpList: {get_attr: [ObjectStorage, internal_api_ip_address]}
635 StorageIpList: {get_attr: [ObjectStorage, storage_ip_address]}
636 StorageMgmtIpList: {get_attr: [ObjectStorage, storage_mgmt_ip_address]}
637 TenantIpList: {get_attr: [ObjectStorage, tenant_ip_address]}
638 ManagementIpList: {get_attr: [ObjectStorage, management_ip_address]}
639 EnabledServices: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
640 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
641 ServiceHostnameList: {get_attr: [ObjectStorage, hostname]}
643 CephStorageIpListMap:
644 type: OS::TripleO::Network::Ports::NetIpListMap
646 ControlPlaneIpList: {get_attr: [CephStorage, ip_address]}
647 ExternalIpList: {get_attr: [CephStorage, external_ip_address]}
648 InternalApiIpList: {get_attr: [CephStorage, internal_api_ip_address]}
649 StorageIpList: {get_attr: [CephStorage, storage_ip_address]}
650 StorageMgmtIpList: {get_attr: [CephStorage, storage_mgmt_ip_address]}
651 TenantIpList: {get_attr: [CephStorage, tenant_ip_address]}
652 ManagementIpList: {get_attr: [CephStorage, management_ip_address]}
653 EnabledServices: {get_attr: [CephStorageServiceChain, role_data, service_names]}
654 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
655 ServiceHostnameList: {get_attr: [CephStorage, hostname]}
658 type: OS::TripleO::AllNodes::SoftwareConfig
663 - {get_attr: [Compute, hosts_entry]}
666 - {get_attr: [Controller, hosts_entry]}
669 - {get_attr: [BlockStorage, hosts_entry]}
672 - {get_attr: [ObjectStorage, hosts_entry]}
675 - {get_attr: [CephStorage, hosts_entry]}
679 - {get_attr: [ControllerServiceChain, role_data, service_names]}
680 - {get_attr: [ComputeServiceChain, role_data, service_names]}
681 - {get_attr: [BlockStorageServiceChain, role_data, service_names]}
682 - {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
683 - {get_attr: [CephStorageServiceChain, role_data, service_names]}
684 controller_ips: {get_attr: [Controller, ip_address]}
685 controller_names: {get_attr: [Controller, hostname]}
687 # Note (shardy) this somewhat complex yaql may be replaced
688 # with a map_deep_merge function in ocata. It merges the
689 # list of maps, but appends to colliding lists when a service
690 # is deployed on more than one role
692 expression: dict($.data.l.where($ != null).selectMany($.items()).groupBy($[0], $[1], [$[0], $[1].flatten()]))
695 - {get_attr: [ControllerIpListMap, service_ips]}
696 - {get_attr: [ComputeIpListMap, service_ips]}
697 - {get_attr: [BlockStorageIpListMap, service_ips]}
698 - {get_attr: [ObjectStorageIpListMap, service_ips]}
699 - {get_attr: [CephStorageIpListMap, service_ips]}
702 expression: dict($.data.l.where($ != null).selectMany($.items()).groupBy($[0], $[1], [$[0], $[1].flatten()]))
705 - {get_attr: [ControllerIpListMap, service_hostnames]}
706 - {get_attr: [ComputeIpListMap, service_hostnames]}
707 - {get_attr: [BlockStorageIpListMap, service_hostnames]}
708 - {get_attr: [ObjectStorageIpListMap, service_hostnames]}
709 - {get_attr: [CephStorageIpListMap, service_hostnames]}
710 # FIXME(shardy): These require further work to move into service_ips
711 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
712 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
713 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
714 DeployIdentifier: {get_param: DeployIdentifier}
715 UpdateIdentifier: {get_param: UpdateIdentifier}
718 type: OS::Heat::RandomString
723 type: OS::Heat::RandomString
726 salt: {get_param: RabbitCookieSalt}
729 type: OS::TripleO::DefaultPasswords
731 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
732 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
733 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
734 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
735 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
737 # creates the network architecture
739 type: OS::TripleO::Network
742 type: OS::Neutron::Port
745 name: control_virtual_ip
746 network: {get_param: NeutronControlPlaneID}
747 fixed_ips: {get_param: ControlFixedIPs}
748 replacement_policy: AUTO
752 type: OS::TripleO::Network::Ports::RedisVipPort
754 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
755 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
756 PortName: redis_virtual_ip
757 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
759 FixedIPs: {get_param: RedisVirtualFixedIPs}
761 # The public VIP is on the External net, falls back to ctlplane
764 type: OS::TripleO::Network::Ports::ExternalVipPort
766 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
767 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
768 PortName: public_virtual_ip
769 FixedIPs: {get_param: PublicVirtualFixedIPs}
771 InternalApiVirtualIP:
773 type: OS::TripleO::Network::Ports::InternalApiVipPort
775 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
776 PortName: internal_api_virtual_ip
777 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
781 type: OS::TripleO::Network::Ports::StorageVipPort
783 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
784 PortName: storage_virtual_ip
785 FixedIPs: {get_param: StorageVirtualFixedIPs}
787 StorageMgmtVirtualIP:
789 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
791 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
792 PortName: storage_management_virtual_ip
793 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
796 type: OS::TripleO::Network::Ports::NetVipMap
798 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
799 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
800 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
801 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
802 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
803 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
804 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
805 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
806 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
807 # No tenant or management VIP required
810 type: OS::TripleO::VipConfig
812 NetIpMap: {get_attr: [VipMap, net_ip_map]}
813 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
817 - {get_attr: [ControllerServiceChain, role_data, service_names]}
818 - {get_attr: [ComputeServiceChain, role_data, service_names]}
819 - {get_attr: [BlockStorageServiceChain, role_data, service_names]}
820 - {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
821 - {get_attr: [CephStorageServiceChain, role_data, service_names]}
824 type: OS::Heat::StructuredDeployments
827 config: {get_resource: VipConfig}
828 servers: {get_attr: [Controller, attributes, nova_server_resource]}
830 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
831 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
832 # direct configuration of Virtual IPs for each network
833 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
834 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
835 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
836 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
837 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
839 ControllerSwiftDeployment:
840 type: OS::Heat::StructuredDeployments
842 name: ControllerSwiftDeployment
843 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
844 servers: {get_attr: [Controller, attributes, nova_server_resource]}
846 ObjectStorageSwiftDeployment:
847 type: OS::Heat::StructuredDeployments
849 name: ObjectStorageSwiftDeployment
850 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
851 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
853 SwiftDevicesAndProxyConfig:
854 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
856 controller_swift_devices: {get_attr: [Controller, swift_device]}
857 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
858 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
860 ControllerAllNodesDeployment:
861 type: OS::Heat::StructuredDeployments
863 name: ControllerAllNodesDeployment
864 config: {get_attr: [allNodesConfig, config_id]}
865 servers: {get_attr: [Controller, attributes, nova_server_resource]}
867 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
868 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
870 ComputeAllNodesDeployment:
871 type: OS::Heat::StructuredDeployments
873 name: ComputeAllNodesDeployment
874 config: {get_attr: [allNodesConfig, config_id]}
875 servers: {get_attr: [Compute, attributes, nova_server_resource]}
877 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
878 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
880 BlockStorageAllNodesDeployment:
881 type: OS::Heat::StructuredDeployments
883 name: BlockStorageAllNodesDeployment
884 config: {get_attr: [allNodesConfig, config_id]}
885 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
887 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
888 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
890 ObjectStorageAllNodesDeployment:
891 type: OS::Heat::StructuredDeployments
893 name: ObjectStorageAllNodesDeployment
894 config: {get_attr: [allNodesConfig, config_id]}
895 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
897 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
898 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
900 CephStorageAllNodesDeployment:
901 type: OS::Heat::StructuredDeployments
903 name: CephStorageAllNodesDeployment
904 config: {get_attr: [allNodesConfig, config_id]}
905 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
907 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
908 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
910 # All Nodes Validations
911 AllNodesValidationConfig:
912 type: OS::TripleO::AllNodes::Validation
917 - - {get_attr: [Controller, resource.0.external_ip_address]}
918 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
919 - {get_attr: [Controller, resource.0.storage_ip_address]}
920 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
921 - {get_attr: [Controller, resource.0.tenant_ip_address]}
922 - {get_attr: [Controller, resource.0.management_ip_address]}
924 ControllerAllNodesValidationDeployment:
925 type: OS::Heat::StructuredDeployments
926 depends_on: ControllerAllNodesDeployment
928 name: ControllerAllNodesValidationDeployment
929 config: {get_resource: AllNodesValidationConfig}
930 servers: {get_attr: [Controller, attributes, nova_server_resource]}
932 ComputeAllNodesValidationDeployment:
933 type: OS::Heat::StructuredDeployments
934 depends_on: ComputeAllNodesDeployment
936 name: ComputeAllNodesValidationDeployment
937 config: {get_resource: AllNodesValidationConfig}
938 servers: {get_attr: [Compute, attributes, nova_server_resource]}
940 BlockStorageAllNodesValidationDeployment:
941 type: OS::Heat::StructuredDeployments
942 depends_on: BlockStorageAllNodesDeployment
944 name: BlockStorageAllNodesValidationDeployment
945 config: {get_resource: AllNodesValidationConfig}
946 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
948 ObjectStorageAllNodesValidationDeployment:
949 type: OS::Heat::StructuredDeployments
950 depends_on: ObjectStorageAllNodesDeployment
952 name: ObjectStorageAllNodesValidationDeployment
953 config: {get_resource: AllNodesValidationConfig}
954 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
956 CephStorageAllNodesValidationDeployment:
957 type: OS::Heat::StructuredDeployments
958 depends_on: CephStorageAllNodesDeployment
960 name: CephStorageAllNodesValidationDeployment
961 config: {get_resource: AllNodesValidationConfig}
962 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
965 type: OS::TripleO::Tasks::UpdateWorkflow
967 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
968 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
969 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
970 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
971 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
973 deploy_identifier: {get_param: DeployIdentifier}
974 update_identifier: {get_param: UpdateIdentifier}
976 # Optional ExtraConfig for all nodes - all roles are passed in here, but
977 # the nested template may configure each role differently (or not at all)
979 type: OS::TripleO::AllNodesExtraConfig
982 - ComputeAllNodesValidationDeployment
983 - BlockStorageAllNodesValidationDeployment
984 - ObjectStorageAllNodesValidationDeployment
985 - CephStorageAllNodesValidationDeployment
986 - ControllerAllNodesValidationDeployment
988 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
989 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
990 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
991 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
992 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
994 # Nested stack deployment runs after all other controller deployments
995 ControllerNodesPostDeployment:
996 type: OS::TripleO::ControllerPostDeployment
997 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
999 servers: {get_attr: [Controller, attributes, nova_server_resource]}
1000 RoleData: {get_attr: [ControllerServiceChain, role_data]}
1002 ComputeNodesPostDeployment:
1003 type: OS::TripleO::ComputePostDeployment
1004 depends_on: [ComputeAllNodesDeployment]
1006 servers: {get_attr: [Compute, attributes, nova_server_resource]}
1007 RoleData: {get_attr: [ComputeServiceChain, role_data]}
1009 ObjectStorageNodesPostDeployment:
1010 type: OS::TripleO::ObjectStoragePostDeployment
1011 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1013 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1014 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
1016 BlockStorageNodesPostDeployment:
1017 type: OS::TripleO::BlockStoragePostDeployment
1018 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1020 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1021 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
1023 CephStorageNodesPostDeployment:
1024 type: OS::TripleO::CephStoragePostDeployment
1025 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
1027 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1028 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
1033 description: Asserts that the keystone endpoints have been provisioned.
1036 description: URL for the Overcloud Keystone service
1037 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
1039 description: Keystone Admin VIP endpoint
1040 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
1042 description: Controller VIP for public API endpoints
1043 value: {get_attr: [VipMap, net_ip_map, external]}
1045 description: VIP for Aodh API internal endpoint
1046 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
1047 CeilometerInternalVip:
1048 description: VIP for Ceilometer API internal endpoint
1049 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
1051 description: VIP for Cinder API internal endpoint
1052 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
1054 description: VIP for Glance API internal endpoint
1055 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
1057 description: VIP for Gnocchi API internal endpoint
1058 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
1060 description: VIP for Heat API internal endpoint
1061 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
1063 description: VIP for Ironic API internal endpoint
1064 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
1065 KeystoneInternalVip:
1066 description: VIP for Keystone API internal endpoint
1067 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
1069 description: VIP for Manila API internal endpoint
1070 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
1072 description: VIP for Neutron API internal endpoint
1073 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
1075 description: VIP for Nova API internal endpoint
1076 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
1077 OpenDaylightInternalVip:
1078 description: VIP for OpenDaylight API internal endpoint
1079 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
1081 description: VIP for Sahara API internal endpoint
1082 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
1084 description: VIP for Swift Proxy internal endpoint
1085 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
1088 Mapping of the resources with the needed info for their endpoints.
1089 This includes the protocol used, the IP, port and also a full
1090 representation of the URI.
1091 value: {get_attr: [EndpointMap, endpoint_map]}
1094 The content that should be appended to your /etc/hosts if you want to get
1095 hostname-based access to the deployed nodes (useful for testing without
1097 value: {get_attr: [allNodesConfig, hosts_entries]}
1099 description: The services enabled on each role
1101 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
1102 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
1103 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
1104 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
1105 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}