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)
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 PcsdPassword: {get_resource: PcsdPassword}
444 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
445 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
446 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
447 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
450 template: {get_param: ControllerHostnameFormat}
452 '%stackname%': {get_param: 'OS::stack_name'}
454 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
455 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
456 MonitoringSubscriptions: {get_attr: [ControllerServiceChain, role_data, monitoring_subscriptions]}
459 type: OS::TripleO::Services
461 Services: {get_param: ComputeServices}
462 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
463 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
464 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
467 type: OS::Heat::ResourceGroup
470 count: {get_param: ComputeCount}
471 removal_policies: {get_param: ComputeRemovalPolicies}
473 type: OS::TripleO::Compute
475 CloudDomain: {get_param: CloudDomain}
476 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
477 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
478 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
479 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
482 template: {get_param: ComputeHostnameFormat}
484 '%stackname%': {get_param: 'OS::stack_name'}
486 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
487 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
488 MonitoringSubscriptions: {get_attr: [ComputeServiceChain, role_data, monitoring_subscriptions]}
490 BlockStorageServiceChain:
491 type: OS::TripleO::Services
493 Services: {get_param: BlockStorageServices}
494 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
495 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
496 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
499 type: OS::Heat::ResourceGroup
502 count: {get_param: BlockStorageCount}
503 removal_policies: {get_param: BlockStorageRemovalPolicies}
505 type: OS::TripleO::BlockStorage
507 UpdateIdentifier: {get_param: UpdateIdentifier}
510 template: {get_param: BlockStorageHostnameFormat}
512 '%stackname%': {get_param: 'OS::stack_name'}
513 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
514 ExtraConfig: {get_param: ExtraConfig}
515 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
516 CloudDomain: {get_param: CloudDomain}
517 ServerMetadata: {get_param: ServerMetadata}
519 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
520 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
521 MonitoringSubscriptions: {get_attr: [BlockStorageServiceChain, role_data, monitoring_subscriptions]}
523 ObjectStorageServiceChain:
524 type: OS::TripleO::Services
526 Services: {get_param: ObjectStorageServices}
527 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
528 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
529 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
532 type: OS::Heat::ResourceGroup
535 count: {get_param: ObjectStorageCount}
536 removal_policies: {get_param: ObjectStorageRemovalPolicies}
538 type: OS::TripleO::ObjectStorage
540 UpdateIdentifier: {get_param: UpdateIdentifier}
541 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
544 template: {get_param: ObjectStorageHostnameFormat}
546 '%stackname%': {get_param: 'OS::stack_name'}
547 ExtraConfig: {get_param: ExtraConfig}
548 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
549 CloudDomain: {get_param: CloudDomain}
550 ServerMetadata: {get_param: ServerMetadata}
552 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
553 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
554 MonitoringSubscriptions: {get_attr: [ObjectStorageServiceChain, role_data, monitoring_subscriptions]}
556 CephStorageServiceChain:
557 type: OS::TripleO::Services
559 Services: {get_param: CephStorageServices}
560 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
561 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
562 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
565 type: OS::Heat::ResourceGroup
568 count: {get_param: CephStorageCount}
569 removal_policies: {get_param: CephStorageRemovalPolicies}
571 type: OS::TripleO::CephStorage
573 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
574 UpdateIdentifier: {get_param: UpdateIdentifier}
577 template: {get_param: CephStorageHostnameFormat}
579 '%stackname%': {get_param: 'OS::stack_name'}
580 ExtraConfig: {get_param: ExtraConfig}
581 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
582 CloudDomain: {get_param: CloudDomain}
583 ServerMetadata: {get_param: ServerMetadata}
585 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
586 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
587 MonitoringSubscriptions: {get_attr: [CephStorageServiceChain, role_data, monitoring_subscriptions]}
590 type: OS::TripleO::Network::Ports::NetIpListMap
592 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
593 ExternalIpList: {get_attr: [Controller, external_ip_address]}
594 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
595 StorageIpList: {get_attr: [Controller, storage_ip_address]}
596 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
597 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
598 ManagementIpList: {get_attr: [Controller, management_ip_address]}
599 EnabledServices: {get_attr: [ControllerServiceChain, role_data, service_names]}
600 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
603 type: OS::TripleO::AllNodes::SoftwareConfig
608 - {get_attr: [Compute, hosts_entry]}
611 - {get_attr: [Controller, hosts_entry]}
614 - {get_attr: [BlockStorage, hosts_entry]}
617 - {get_attr: [ObjectStorage, hosts_entry]}
620 - {get_attr: [CephStorage, hosts_entry]}
624 - {get_attr: [ControllerServiceChain, role_data, service_names]}
625 - {get_attr: [ComputeServiceChain, role_data, service_names]}
626 - {get_attr: [BlockStorageServiceChain, role_data, service_names]}
627 - {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
628 - {get_attr: [CephStorageServiceChain, role_data, service_names]}
629 controller_ips: {get_attr: [Controller, ip_address]}
630 controller_names: {get_attr: [Controller, hostname]}
631 service_ips: {get_attr: [ControllerIpListMap, service_ips]}
632 # FIXME(shardy): These require further work to move into service_ips
633 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
634 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
635 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
636 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
637 ceph_mon_node_names: {get_attr: [Controller, hostname]}
638 DeployIdentifier: {get_param: DeployIdentifier}
639 UpdateIdentifier: {get_param: UpdateIdentifier}
642 type: OS::Heat::RandomString
647 type: OS::Heat::RandomString
650 salt: {get_param: RabbitCookieSalt}
653 type: OS::TripleO::DefaultPasswords
655 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
656 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
657 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
658 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
659 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
661 # creates the network architecture
663 type: OS::TripleO::Network
666 type: OS::Neutron::Port
669 name: control_virtual_ip
670 network: {get_param: NeutronControlPlaneID}
671 fixed_ips: {get_param: ControlFixedIPs}
672 replacement_policy: AUTO
676 type: OS::TripleO::Network::Ports::RedisVipPort
678 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
679 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
680 PortName: redis_virtual_ip
681 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
683 FixedIPs: {get_param: RedisVirtualFixedIPs}
685 # The public VIP is on the External net, falls back to ctlplane
688 type: OS::TripleO::Network::Ports::ExternalVipPort
690 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
691 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
692 PortName: public_virtual_ip
693 FixedIPs: {get_param: PublicVirtualFixedIPs}
695 InternalApiVirtualIP:
697 type: OS::TripleO::Network::Ports::InternalApiVipPort
699 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
700 PortName: internal_api_virtual_ip
701 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
705 type: OS::TripleO::Network::Ports::StorageVipPort
707 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
708 PortName: storage_virtual_ip
709 FixedIPs: {get_param: StorageVirtualFixedIPs}
711 StorageMgmtVirtualIP:
713 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
715 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
716 PortName: storage_management_virtual_ip
717 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
720 type: OS::TripleO::Network::Ports::NetVipMap
722 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
723 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
724 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
725 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
726 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
727 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
728 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
729 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
730 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
731 # No tenant or management VIP required
734 type: OS::TripleO::VipConfig
737 type: OS::Heat::StructuredDeployments
740 config: {get_resource: VipConfig}
741 servers: {get_attr: [Controller, attributes, nova_server_resource]}
743 # service VIP mappings
744 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
745 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
746 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
747 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
748 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
749 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
750 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
751 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
752 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
753 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
754 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
755 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
756 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
757 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
758 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
759 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
760 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
761 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
762 # direct configuration of Virtual IPs for each network
763 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
764 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
765 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
766 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
767 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
768 opendaylight_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
769 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
770 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
772 ControllerSwiftDeployment:
773 type: OS::Heat::StructuredDeployments
775 name: ControllerSwiftDeployment
776 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
777 servers: {get_attr: [Controller, attributes, nova_server_resource]}
779 ObjectStorageSwiftDeployment:
780 type: OS::Heat::StructuredDeployments
782 name: ObjectStorageSwiftDeployment
783 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
784 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
786 SwiftDevicesAndProxyConfig:
787 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
789 controller_swift_devices: {get_attr: [Controller, swift_device]}
790 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
791 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
793 ControllerAllNodesDeployment:
794 type: OS::Heat::StructuredDeployments
796 name: ControllerAllNodesDeployment
797 config: {get_attr: [allNodesConfig, config_id]}
798 servers: {get_attr: [Controller, attributes, nova_server_resource]}
800 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
801 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
803 ComputeAllNodesDeployment:
804 type: OS::Heat::StructuredDeployments
806 name: ComputeAllNodesDeployment
807 config: {get_attr: [allNodesConfig, config_id]}
808 servers: {get_attr: [Compute, attributes, nova_server_resource]}
810 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
811 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
813 BlockStorageAllNodesDeployment:
814 type: OS::Heat::StructuredDeployments
816 name: BlockStorageAllNodesDeployment
817 config: {get_attr: [allNodesConfig, config_id]}
818 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
820 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
821 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
823 ObjectStorageAllNodesDeployment:
824 type: OS::Heat::StructuredDeployments
826 name: ObjectStorageAllNodesDeployment
827 config: {get_attr: [allNodesConfig, config_id]}
828 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
830 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
831 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
833 CephStorageAllNodesDeployment:
834 type: OS::Heat::StructuredDeployments
836 name: CephStorageAllNodesDeployment
837 config: {get_attr: [allNodesConfig, config_id]}
838 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
840 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
841 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
843 # All Nodes Validations
844 AllNodesValidationConfig:
845 type: OS::TripleO::AllNodes::Validation
850 - - {get_attr: [Controller, resource.0.external_ip_address]}
851 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
852 - {get_attr: [Controller, resource.0.storage_ip_address]}
853 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
854 - {get_attr: [Controller, resource.0.tenant_ip_address]}
855 - {get_attr: [Controller, resource.0.management_ip_address]}
857 ControllerAllNodesValidationDeployment:
858 type: OS::Heat::StructuredDeployments
859 depends_on: ControllerAllNodesDeployment
861 name: ControllerAllNodesValidationDeployment
862 config: {get_resource: AllNodesValidationConfig}
863 servers: {get_attr: [Controller, attributes, nova_server_resource]}
865 ComputeAllNodesValidationDeployment:
866 type: OS::Heat::StructuredDeployments
867 depends_on: ComputeAllNodesDeployment
869 name: ComputeAllNodesValidationDeployment
870 config: {get_resource: AllNodesValidationConfig}
871 servers: {get_attr: [Compute, attributes, nova_server_resource]}
873 BlockStorageAllNodesValidationDeployment:
874 type: OS::Heat::StructuredDeployments
875 depends_on: BlockStorageAllNodesDeployment
877 name: BlockStorageAllNodesValidationDeployment
878 config: {get_resource: AllNodesValidationConfig}
879 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
881 ObjectStorageAllNodesValidationDeployment:
882 type: OS::Heat::StructuredDeployments
883 depends_on: ObjectStorageAllNodesDeployment
885 name: ObjectStorageAllNodesValidationDeployment
886 config: {get_resource: AllNodesValidationConfig}
887 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
889 CephStorageAllNodesValidationDeployment:
890 type: OS::Heat::StructuredDeployments
891 depends_on: CephStorageAllNodesDeployment
893 name: CephStorageAllNodesValidationDeployment
894 config: {get_resource: AllNodesValidationConfig}
895 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
898 type: OS::TripleO::Tasks::UpdateWorkflow
900 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
901 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
902 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
903 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
904 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
906 deploy_identifier: {get_param: DeployIdentifier}
907 update_identifier: {get_param: UpdateIdentifier}
909 # Optional ExtraConfig for all nodes - all roles are passed in here, but
910 # the nested template may configure each role differently (or not at all)
912 type: OS::TripleO::AllNodesExtraConfig
915 - ComputeAllNodesValidationDeployment
916 - BlockStorageAllNodesValidationDeployment
917 - ObjectStorageAllNodesValidationDeployment
918 - CephStorageAllNodesValidationDeployment
919 - ControllerAllNodesValidationDeployment
921 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
922 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
923 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
924 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
925 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
927 # Nested stack deployment runs after all other controller deployments
928 ControllerNodesPostDeployment:
929 type: OS::TripleO::ControllerPostDeployment
930 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
932 servers: {get_attr: [Controller, attributes, nova_server_resource]}
933 RoleData: {get_attr: [ControllerServiceChain, role_data]}
935 ComputeNodesPostDeployment:
936 type: OS::TripleO::ComputePostDeployment
937 depends_on: [ComputeAllNodesDeployment]
939 servers: {get_attr: [Compute, attributes, nova_server_resource]}
940 RoleData: {get_attr: [ComputeServiceChain, role_data]}
942 ObjectStorageNodesPostDeployment:
943 type: OS::TripleO::ObjectStoragePostDeployment
944 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
946 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
947 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
949 BlockStorageNodesPostDeployment:
950 type: OS::TripleO::BlockStoragePostDeployment
951 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
953 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
954 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
956 CephStorageNodesPostDeployment:
957 type: OS::TripleO::CephStoragePostDeployment
958 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
960 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
961 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
966 description: Asserts that the keystone endpoints have been provisioned.
969 description: URL for the Overcloud Keystone service
970 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
972 description: Keystone Admin VIP endpoint
973 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
975 description: Controller VIP for public API endpoints
976 value: {get_attr: [VipMap, net_ip_map, external]}
978 description: VIP for Aodh API internal endpoint
979 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
980 CeilometerInternalVip:
981 description: VIP for Ceilometer API internal endpoint
982 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
984 description: VIP for Cinder API internal endpoint
985 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
987 description: VIP for Glance API internal endpoint
988 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
990 description: VIP for Gnocchi API internal endpoint
991 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
993 description: VIP for Heat API internal endpoint
994 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
996 description: VIP for Ironic API internal endpoint
997 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
999 description: VIP for Keystone API internal endpoint
1000 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
1002 description: VIP for Manila API internal endpoint
1003 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
1005 description: VIP for Neutron API internal endpoint
1006 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
1008 description: VIP for Nova API internal endpoint
1009 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
1010 OpenDaylightInternalVip:
1011 description: VIP for OpenDaylight API internal endpoint
1012 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
1014 description: VIP for Sahara API internal endpoint
1015 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
1017 description: VIP for Swift Proxy internal endpoint
1018 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
1021 Mapping of the resources with the needed info for their endpoints.
1022 This includes the protocol used, the IP, port and also a full
1023 representation of the URI.
1024 value: {get_attr: [EndpointMap, endpoint_map]}
1027 The content that should be appended to your /etc/hosts if you want to get
1028 hostname-based access to the deployed nodes (useful for testing without
1030 value: {get_attr: [allNodesConfig, hosts_entries]}
1032 description: The services enabled on each role
1034 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
1035 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
1036 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
1037 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
1038 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}