1 heat_template_version: 2016-04-08
4 Deploy an OpenStack environment, consisting of several node types (roles),
5 Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
6 roles enable independent scaling of the storage components, but the minimal
7 deployment is one Controller and one Compute node.
10 # TODO(shadower): we should probably use the parameter groups to put
14 # Common parameters (not specific to a role)
17 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
21 description: Should be used for arbitrary ips.
23 InternalApiVirtualFixedIPs:
26 Control the IP allocation for the InternalApiVirtualInterface port. E.g.
27 [{'ip_address':'1.2.3.4'}]
29 NeutronControlPlaneID:
32 description: Neutron ID or name for ctlplane network.
33 NeutronPublicInterface:
35 description: What interface to bridge onto br-ex for network nodes.
37 PublicVirtualFixedIPs:
40 Control the IP allocation for the PublicVirtualInterface port. E.g.
41 [{'ip_address':'1.2.3.4'}]
46 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
47 StorageVirtualFixedIPs:
50 Control the IP allocation for the StorageVirtualInterface port. E.g.
51 [{'ip_address':'1.2.3.4'}]
53 StorageMgmtVirtualFixedIPs:
56 Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
57 [{'ip_address':'1.2.3.4'}]
60 default: 'localdomain'
63 The DNS domain used for the hosts. This should match the dhcp_domain
64 configured in the Undercloud neutron. Defaults to localdomain.
68 Extra properties or metadata passed to Nova for the created nodes in
69 the overcloud. It's accessible via the Nova metadata API.
72 # Controller-specific params
76 controllerExtraConfig:
79 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
84 Additional configuration to inject into the cluster. The format required
85 may be implementation specific, e.g puppet hieradata. Any role specific
86 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
89 description: A random string to be used as a salt when hashing to determine mappings in the ring.
94 # Compute-specific params
98 HypervisorNeutronPhysicalBridge:
101 An OVS bridge to create on each hypervisor. This defaults to br-ex the
102 same as the control plane nodes, as we have a uniform configuration of
103 the openvswitch agent. Typically should not need to be changed.
105 HypervisorNeutronPublicInterface:
107 description: What interface to add to the HypervisorNeutronPhysicalBridge.
112 - OS::TripleO::Services::CephMon
113 - OS::TripleO::Services::CephExternal
114 - OS::TripleO::Services::CinderApi
115 - OS::TripleO::Services::CinderBackup
116 - OS::TripleO::Services::CinderScheduler
117 - OS::TripleO::Services::CinderVolume
118 - OS::TripleO::Services::Core
119 - OS::TripleO::Services::Kernel
120 - OS::TripleO::Services::Keystone
121 - OS::TripleO::Services::GlanceApi
122 - OS::TripleO::Services::GlanceRegistry
123 - OS::TripleO::Services::HeatApi
124 - OS::TripleO::Services::HeatApiCfn
125 - OS::TripleO::Services::HeatApiCloudwatch
126 - OS::TripleO::Services::HeatEngine
127 - OS::TripleO::Services::MySQL
128 - OS::TripleO::Services::NeutronDhcpAgent
129 - OS::TripleO::Services::NeutronL3Agent
130 - OS::TripleO::Services::NeutronMetadataAgent
131 - OS::TripleO::Services::NeutronApi
132 - OS::TripleO::Services::NeutronCorePlugin
133 - OS::TripleO::Services::NeutronOvsAgent
134 - OS::TripleO::Services::RabbitMQ
135 - OS::TripleO::Services::HAproxy
136 - OS::TripleO::Services::Keepalived
137 - OS::TripleO::Services::Memcached
138 - OS::TripleO::Services::Pacemaker
139 - OS::TripleO::Services::Redis
140 - OS::TripleO::Services::NovaConductor
141 - OS::TripleO::Services::MongoDb
142 - OS::TripleO::Services::NovaApi
143 - OS::TripleO::Services::NovaScheduler
144 - OS::TripleO::Services::NovaConsoleauth
145 - OS::TripleO::Services::NovaVncproxy
146 - OS::TripleO::Services::Ntp
147 - OS::TripleO::Services::SwiftProxy
148 - OS::TripleO::Services::SwiftStorage
149 - OS::TripleO::Services::SwiftRingBuilder
150 - OS::TripleO::Services::Snmp
151 - OS::TripleO::Services::Timezone
152 - OS::TripleO::Services::CeilometerApi
153 - OS::TripleO::Services::CeilometerCollector
154 - OS::TripleO::Services::CeilometerExpirer
155 - OS::TripleO::Services::CeilometerAgentCentral
156 - OS::TripleO::Services::CeilometerAgentNotification
157 - OS::TripleO::Services::Horizon
158 - OS::TripleO::Services::GnocchiApi
159 - OS::TripleO::Services::GnocchiMetricd
160 - OS::TripleO::Services::GnocchiStatsd
161 - OS::Tripleo::Services::ManilaApi
162 - OS::Tripleo::Services::ManilaScheduler
163 - OS::Tripleo::Services::ManilaShare
164 - OS::TripleO::Services::AodhApi
165 - OS::TripleO::Services::AodhEvaluator
166 - OS::TripleO::Services::AodhNotifier
167 - OS::TripleO::Services::AodhListener
168 - OS::TripleO::Services::SaharaApi
169 - OS::TripleO::Services::SaharaEngine
170 - OS::TripleO::Services::IronicApi
171 - OS::TripleO::Services::IronicConductor
172 - OS::TripleO::Services::NovaIronic
173 - OS::TripleO::Services::TripleoPackages
174 - OS::TripleO::Services::TripleoFirewall
175 description: A list of service resources (configured in the Heat
176 resource_registry) which represent nested stacks
177 for each service that should get installed on the Controllers.
178 type: comma_delimited_list
182 - OS::TripleO::Services::CephClient
183 - OS::TripleO::Services::CephExternal
184 - OS::TripleO::Services::Timezone
185 - OS::TripleO::Services::Ntp
186 - OS::TripleO::Services::Snmp
187 - OS::TripleO::Services::NovaCompute
188 - OS::TripleO::Services::NovaLibvirt
189 - OS::TripleO::Services::Kernel
190 - OS::TripleO::Services::ComputeNeutronCorePlugin
191 - OS::TripleO::Services::ComputeNeutronOvsAgent
192 - OS::TripleO::Services::ComputeCeilometerAgent
193 - OS::TripleO::Services::ComputeNeutronL3Agent
194 - OS::TripleO::Services::ComputeNeutronMetadataAgent
195 - OS::TripleO::Services::TripleoPackages
196 - OS::TripleO::Services::TripleoFirewall
197 description: A list of service resources (configured in the Heat
198 resource_registry) which represent nested stacks
199 for each service that should get installed on the Compute Nodes.
200 type: comma_delimited_list
202 # Block storage specific parameters
206 BlockStorageExtraConfig:
209 BlockStorage specific configuration to inject into the cluster. Same
210 structure as ExtraConfig.
212 BlockStorageServices:
214 - OS::TripleO::Services::CinderVolume
215 - OS::TripleO::Services::Kernel
216 - OS::TripleO::Services::Ntp
217 - OS::TripleO::Services::Timezone
218 - OS::TripleO::Services::Snmp
219 - OS::TripleO::Services::TripleoPackages
220 - OS::TripleO::Services::TripleoFirewall
221 description: A list of service resources (configured in the Heat
222 resource_registry) which represent nested stacks
223 for each service that should get installed on the BlockStorage nodes.
224 type: comma_delimited_list
226 # Object storage specific parameters
230 ObjectStorageExtraConfig:
233 ObjectStorage specific configuration to inject into the cluster. Same
234 structure as ExtraConfig.
236 ObjectStorageServices:
238 - OS::TripleO::Services::Kernel
239 - OS::TripleO::Services::Ntp
240 - OS::TripleO::Services::SwiftStorage
241 - OS::TripleO::Services::SwiftRingBuilder
242 - OS::TripleO::Services::Snmp
243 - OS::TripleO::Services::Timezone
244 - OS::TripleO::Services::TripleoPackages
245 - OS::TripleO::Services::TripleoFirewall
246 description: A list of service resources (configured in the Heat
247 resource_registry) which represent nested stacks
248 for each service that should get installed on the ObjectStorage nodes.
249 Note this role currently only supports steps 2, 3 and 4 configuration.
250 type: comma_delimited_list
253 # Ceph storage specific parameters
257 CephStorageExtraConfig:
260 CephStorage specific configuration to inject into the cluster. Same
261 structure as ExtraConfig.
265 - OS::TripleO::Services::CephOSD
266 - OS::TripleO::Services::Kernel
267 - OS::TripleO::Services::Ntp
268 - OS::TripleO::Services::Timezone
269 - OS::TripleO::Services::TripleoPackages
270 - OS::TripleO::Services::TripleoFirewall
271 description: A list of service resources (configured in the Heat
272 resource_registry) which represent nested stacks
273 for each service that should get installed on the CephStorage nodes.
274 type: comma_delimited_list
276 # Hostname format for each role
277 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
278 # and %stackname% is replaced with OS::stack_name in the template below.
279 # If you want to use the heat generated names, pass '' (empty string).
280 ControllerHostnameFormat:
282 description: Format for Controller node hostnames
283 default: '%stackname%-controller-%index%'
284 ComputeHostnameFormat:
286 description: Format for Compute node hostnames
287 default: '%stackname%-novacompute-%index%'
288 BlockStorageHostnameFormat:
290 description: Format for BlockStorage node hostnames
291 default: '%stackname%-blockstorage-%index%'
292 ObjectStorageHostnameFormat:
294 description: Format for SwiftStorage node hostnames
295 default: '%stackname%-objectstorage-%index%'
296 CephStorageHostnameFormat:
298 description: Format for CephStorage node hostnames
299 default: '%stackname%-cephstorage-%index%'
301 # Identifiers to trigger tasks on nodes
306 Setting to a previously unused value during stack-update will trigger
307 package update on all nodes
312 Setting this to a unique value will re-run any deployment tasks which
313 perform configuration on a Heat stack-update.
315 # If you want to remove a specific node from a resource group, you can pass
316 # the node name or id as a <Group>RemovalPolicies parameter, for example:
317 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
318 ControllerRemovalPolicies:
322 List of resources to be removed from ControllerResourceGroup when
323 doing an update which requires removal of specific resources.
324 ComputeRemovalPolicies:
328 List of resources to be removed from ComputeResourceGroup when
329 doing an update which requires removal of specific resources.
330 BlockStorageRemovalPolicies:
334 List of resources to be removed from BlockStorageResourceGroup when
335 doing an update which requires removal of specific resources.
336 ObjectStorageRemovalPolicies:
340 List of resources to be removed from ObjectStorageResourceGroup when
341 doing an update which requires removal of specific resources.
342 CephStorageRemovalPolicies:
346 List of resources to be removed from CephStorageResourceGroup when
347 doing an update which requires removal of specific resources.
351 description: Do not use deprecated params, they will be removed.
353 - controllerExtraConfig
358 HeatAuthEncryptionKey:
359 type: OS::Heat::RandomString
362 type: OS::Heat::RandomString
367 type: OS::Heat::RandomString
372 type: OS::TripleO::ServiceNetMap
375 type: OS::TripleO::EndpointMap
377 CloudName: {get_param: CloudName}
378 NetIpMap: {get_attr: [VipMap, net_ip_map]}
379 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
381 ControllerServiceChain:
382 type: OS::TripleO::Services
384 Services: {get_param: ControllerServices}
385 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
388 type: OS::Heat::ResourceGroup
391 count: {get_param: ControllerCount}
392 removal_policies: {get_param: ControllerRemovalPolicies}
394 type: OS::TripleO::Controller
396 CloudDomain: {get_param: CloudDomain}
397 controllerExtraConfig: {get_param: controllerExtraConfig}
398 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
399 HorizonSecret: {get_resource: HorizonSecret}
400 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
401 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
402 PcsdPassword: {get_resource: PcsdPassword}
403 RabbitCookie: {get_attr: [RabbitCookie, value]}
404 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
405 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
406 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
407 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
408 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
411 template: {get_param: ControllerHostnameFormat}
413 '%stackname%': {get_param: 'OS::stack_name'}
415 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
416 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
420 type: OS::TripleO::Services
422 Services: {get_param: ComputeServices}
423 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
426 type: OS::Heat::ResourceGroup
429 count: {get_param: ComputeCount}
430 removal_policies: {get_param: ComputeRemovalPolicies}
432 type: OS::TripleO::Compute
434 CloudDomain: {get_param: CloudDomain}
435 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
436 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
437 # L3 HA and Failover is not relevant for Computes, should be removed
438 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
439 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
440 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
441 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
444 template: {get_param: ComputeHostnameFormat}
446 '%stackname%': {get_param: 'OS::stack_name'}
448 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
449 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
451 BlockStorageServiceChain:
452 type: OS::TripleO::Services
454 Services: {get_param: BlockStorageServices}
455 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
458 type: OS::Heat::ResourceGroup
461 count: {get_param: BlockStorageCount}
462 removal_policies: {get_param: BlockStorageRemovalPolicies}
464 type: OS::TripleO::BlockStorage
466 UpdateIdentifier: {get_param: UpdateIdentifier}
469 template: {get_param: BlockStorageHostnameFormat}
471 '%stackname%': {get_param: 'OS::stack_name'}
472 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
473 ExtraConfig: {get_param: ExtraConfig}
474 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
475 CloudDomain: {get_param: CloudDomain}
476 ServerMetadata: {get_param: ServerMetadata}
478 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
479 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
481 ObjectStorageServiceChain:
482 type: OS::TripleO::Services
484 Services: {get_param: ObjectStorageServices}
485 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
488 type: OS::Heat::ResourceGroup
491 count: {get_param: ObjectStorageCount}
492 removal_policies: {get_param: ObjectStorageRemovalPolicies}
494 type: OS::TripleO::ObjectStorage
496 HashSuffix: {get_param: SwiftHashSuffix}
497 UpdateIdentifier: {get_param: UpdateIdentifier}
498 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
501 template: {get_param: ObjectStorageHostnameFormat}
503 '%stackname%': {get_param: 'OS::stack_name'}
504 ExtraConfig: {get_param: ExtraConfig}
505 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
506 CloudDomain: {get_param: CloudDomain}
507 ServerMetadata: {get_param: ServerMetadata}
509 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
510 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
512 CephStorageServiceChain:
513 type: OS::TripleO::Services
515 Services: {get_param: CephStorageServices}
516 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
519 type: OS::Heat::ResourceGroup
522 count: {get_param: CephStorageCount}
523 removal_policies: {get_param: CephStorageRemovalPolicies}
525 type: OS::TripleO::CephStorage
527 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
528 UpdateIdentifier: {get_param: UpdateIdentifier}
531 template: {get_param: CephStorageHostnameFormat}
533 '%stackname%': {get_param: 'OS::stack_name'}
534 ExtraConfig: {get_param: ExtraConfig}
535 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
536 CloudDomain: {get_param: CloudDomain}
537 ServerMetadata: {get_param: ServerMetadata}
539 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
540 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
543 type: OS::TripleO::Network::Ports::NetIpListMap
545 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
546 ExternalIpList: {get_attr: [Controller, external_ip_address]}
547 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
548 StorageIpList: {get_attr: [Controller, storage_ip_address]}
549 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
550 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
551 ManagementIpList: {get_attr: [Controller, management_ip_address]}
554 type: OS::TripleO::AllNodes::SoftwareConfig
559 - {get_attr: [Compute, hosts_entry]}
562 - {get_attr: [Controller, hosts_entry]}
565 - {get_attr: [BlockStorage, hosts_entry]}
568 - {get_attr: [ObjectStorage, hosts_entry]}
571 - {get_attr: [CephStorage, hosts_entry]}
572 controller_ips: {get_attr: [Controller, ip_address]}
573 controller_names: {get_attr: [Controller, hostname]}
574 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
575 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
576 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
577 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
578 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
579 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
580 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
581 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
582 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
583 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
584 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
585 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
586 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
587 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
588 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
589 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
590 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
591 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
592 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
593 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
594 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
595 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
596 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
597 ceph_mon_node_names: {get_attr: [Controller, hostname]}
598 DeployIdentifier: {get_param: DeployIdentifier}
599 UpdateIdentifier: {get_param: UpdateIdentifier}
602 type: OS::Heat::RandomString
606 MysqlClusterUniquePart:
607 type: OS::Heat::RandomString
612 type: OS::Heat::RandomString
615 salt: {get_param: RabbitCookieSalt}
617 # creates the network architecture
619 type: OS::TripleO::Network
622 type: OS::Neutron::Port
625 name: control_virtual_ip
626 network: {get_param: NeutronControlPlaneID}
627 fixed_ips: {get_param: ControlFixedIPs}
628 replacement_policy: AUTO
632 type: OS::TripleO::Network::Ports::RedisVipPort
634 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
635 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
636 PortName: redis_virtual_ip
637 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
640 # The public VIP is on the External net, falls back to ctlplane
643 type: OS::TripleO::Network::Ports::ExternalVipPort
645 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
646 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
647 PortName: public_virtual_ip
648 FixedIPs: {get_param: PublicVirtualFixedIPs}
650 InternalApiVirtualIP:
652 type: OS::TripleO::Network::Ports::InternalApiVipPort
654 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
655 PortName: internal_api_virtual_ip
656 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
660 type: OS::TripleO::Network::Ports::StorageVipPort
662 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
663 PortName: storage_virtual_ip
664 FixedIPs: {get_param: StorageVirtualFixedIPs}
666 StorageMgmtVirtualIP:
668 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
670 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
671 PortName: storage_management_virtual_ip
672 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
675 type: OS::TripleO::Network::Ports::NetVipMap
677 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
678 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
679 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
680 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
681 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
682 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
683 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
684 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
685 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
686 # No tenant or management VIP required
689 type: OS::TripleO::VipConfig
692 type: OS::Heat::StructuredDeployments
695 config: {get_resource: VipConfig}
696 servers: {get_attr: [Controller, attributes, nova_server_resource]}
698 # service VIP mappings
699 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
700 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
701 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
702 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
703 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
704 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
705 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
706 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
707 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
708 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
709 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
710 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
711 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
712 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
713 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
714 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
715 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
716 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
717 # direct configuration of Virtual IPs for each network
718 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
719 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
720 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
721 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
722 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
723 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
724 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
726 ControllerSwiftDeployment:
727 type: OS::Heat::StructuredDeployments
729 name: ControllerSwiftDeployment
730 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
731 servers: {get_attr: [Controller, attributes, nova_server_resource]}
733 ObjectStorageSwiftDeployment:
734 type: OS::Heat::StructuredDeployments
736 name: ObjectStorageSwiftDeployment
737 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
738 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
740 SwiftDevicesAndProxyConfig:
741 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
743 controller_swift_devices: {get_attr: [Controller, swift_device]}
744 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
745 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
747 ControllerAllNodesDeployment:
748 type: OS::Heat::StructuredDeployments
750 name: ControllerAllNodesDeployment
751 config: {get_attr: [allNodesConfig, config_id]}
752 servers: {get_attr: [Controller, attributes, nova_server_resource]}
754 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
755 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
757 ComputeAllNodesDeployment:
758 type: OS::Heat::StructuredDeployments
760 name: ComputeAllNodesDeployment
761 config: {get_attr: [allNodesConfig, config_id]}
762 servers: {get_attr: [Compute, attributes, nova_server_resource]}
764 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
765 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
767 BlockStorageAllNodesDeployment:
768 type: OS::Heat::StructuredDeployments
770 name: BlockStorageAllNodesDeployment
771 config: {get_attr: [allNodesConfig, config_id]}
772 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
774 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
775 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
777 ObjectStorageAllNodesDeployment:
778 type: OS::Heat::StructuredDeployments
780 name: ObjectStorageAllNodesDeployment
781 config: {get_attr: [allNodesConfig, config_id]}
782 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
784 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
785 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
787 CephStorageAllNodesDeployment:
788 type: OS::Heat::StructuredDeployments
790 name: CephStorageAllNodesDeployment
791 config: {get_attr: [allNodesConfig, config_id]}
792 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
794 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
795 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
797 # All Nodes Validations
798 AllNodesValidationConfig:
799 type: OS::TripleO::AllNodes::Validation
804 - - {get_attr: [Controller, resource.0.external_ip_address]}
805 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
806 - {get_attr: [Controller, resource.0.storage_ip_address]}
807 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
808 - {get_attr: [Controller, resource.0.tenant_ip_address]}
810 ControllerAllNodesValidationDeployment:
811 type: OS::Heat::StructuredDeployments
812 depends_on: ControllerAllNodesDeployment
814 name: ControllerAllNodesValidationDeployment
815 config: {get_resource: AllNodesValidationConfig}
816 servers: {get_attr: [Controller, attributes, nova_server_resource]}
818 ComputeAllNodesValidationDeployment:
819 type: OS::Heat::StructuredDeployments
820 depends_on: ComputeAllNodesDeployment
822 name: ComputeAllNodesValidationDeployment
823 config: {get_resource: AllNodesValidationConfig}
824 servers: {get_attr: [Compute, attributes, nova_server_resource]}
826 BlockStorageAllNodesValidationDeployment:
827 type: OS::Heat::StructuredDeployments
828 depends_on: BlockStorageAllNodesDeployment
830 name: BlockStorageAllNodesValidationDeployment
831 config: {get_resource: AllNodesValidationConfig}
832 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
834 ObjectStorageAllNodesValidationDeployment:
835 type: OS::Heat::StructuredDeployments
836 depends_on: ObjectStorageAllNodesDeployment
838 name: ObjectStorageAllNodesValidationDeployment
839 config: {get_resource: AllNodesValidationConfig}
840 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
842 CephStorageAllNodesValidationDeployment:
843 type: OS::Heat::StructuredDeployments
844 depends_on: CephStorageAllNodesDeployment
846 name: CephStorageAllNodesValidationDeployment
847 config: {get_resource: AllNodesValidationConfig}
848 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
851 type: OS::TripleO::Tasks::UpdateWorkflow
853 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
854 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
855 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
856 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
857 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
859 deploy_identifier: {get_param: DeployIdentifier}
860 update_identifier: {get_param: UpdateIdentifier}
862 # Optional ExtraConfig for all nodes - all roles are passed in here, but
863 # the nested template may configure each role differently (or not at all)
865 type: OS::TripleO::AllNodesExtraConfig
868 - ComputeAllNodesValidationDeployment
869 - BlockStorageAllNodesValidationDeployment
870 - ObjectStorageAllNodesValidationDeployment
871 - CephStorageAllNodesValidationDeployment
872 - ControllerAllNodesValidationDeployment
874 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
875 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
876 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
877 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
878 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
880 # Nested stack deployment runs after all other controller deployments
881 ControllerNodesPostDeployment:
882 type: OS::TripleO::ControllerPostDeployment
883 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
885 servers: {get_attr: [Controller, attributes, nova_server_resource]}
886 RoleData: {get_attr: [ControllerServiceChain, role_data]}
888 ComputeNodesPostDeployment:
889 type: OS::TripleO::ComputePostDeployment
890 depends_on: [ComputeAllNodesDeployment]
892 servers: {get_attr: [Compute, attributes, nova_server_resource]}
893 RoleData: {get_attr: [ComputeServiceChain, role_data]}
895 ObjectStorageNodesPostDeployment:
896 type: OS::TripleO::ObjectStoragePostDeployment
897 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
899 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
900 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
902 BlockStorageNodesPostDeployment:
903 type: OS::TripleO::BlockStoragePostDeployment
904 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
906 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
907 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
909 CephStorageNodesPostDeployment:
910 type: OS::TripleO::CephStoragePostDeployment
911 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
913 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
914 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
918 description: URL for the Overcloud Keystone service
919 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
921 description: Keystone Admin VIP endpoint
922 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
924 description: Controller VIP for public API endpoints
925 value: {get_attr: [VipMap, net_ip_map, external]}
927 description: VIP for Aodh API internal endpoint
928 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
929 CeilometerInternalVip:
930 description: VIP for Ceilometer API internal endpoint
931 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
933 description: VIP for Cinder API internal endpoint
934 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
936 description: VIP for Glance API internal endpoint
937 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
939 description: VIP for Gnocchi API internal endpoint
940 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
942 description: VIP for Heat API internal endpoint
943 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
945 description: VIP for Ironic API internal endpoint
946 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
948 description: VIP for Keystone API internal endpoint
949 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
951 description: VIP for Manila API internal endpoint
952 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
954 description: VIP for Neutron API internal endpoint
955 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
957 description: VIP for Nova API internal endpoint
958 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
960 description: VIP for Sahara API internal endpoint
961 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
963 description: VIP for Swift Proxy internal endpoint
964 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
967 Mapping of the resources with the needed info for their endpoints.
968 This includes the protocol used, the IP, port and also a full
969 representation of the URI.
970 value: {get_attr: [EndpointMap, endpoint_map]}
973 The content that should be appended to your /etc/hosts if you want to get
974 hostname-based access to the deployed nodes (useful for testing without
976 value: {get_attr: [allNodesConfig, hosts_entries]}
978 description: The services enabled on each role
980 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
981 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
982 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
983 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
984 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}