1 heat_template_version: 2016-04-08
4 Deploy an OpenStack environment, consisting of several node types (roles),
5 Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
6 roles enable independent scaling of the storage components, but the minimal
7 deployment is one Controller and one Compute node.
10 # TODO(shadower): we should probably use the parameter groups to put
14 # Common parameters (not specific to a role)
17 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
21 description: Should be used for arbitrary ips.
23 InternalApiVirtualFixedIPs:
26 Control the IP allocation for the InternalApiVirtualInterface port. E.g.
27 [{'ip_address':'1.2.3.4'}]
29 NeutronControlPlaneID:
32 description: Neutron ID or name for ctlplane network.
33 NeutronPublicInterface:
35 description: What interface to bridge onto br-ex for network nodes.
37 PublicVirtualFixedIPs:
40 Control the IP allocation for the PublicVirtualInterface port. E.g.
41 [{'ip_address':'1.2.3.4'}]
46 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
47 StorageVirtualFixedIPs:
50 Control the IP allocation for the StorageVirtualInterface port. E.g.
51 [{'ip_address':'1.2.3.4'}]
53 StorageMgmtVirtualFixedIPs:
56 Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
57 [{'ip_address':'1.2.3.4'}]
60 default: 'localdomain'
63 The DNS domain used for the hosts. This should match the dhcp_domain
64 configured in the Undercloud neutron. Defaults to localdomain.
68 Extra properties or metadata passed to Nova for the created nodes in
69 the overcloud. It's accessible via the Nova metadata API.
72 # Controller-specific params
76 controllerExtraConfig:
79 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
84 Additional configuration to inject into the cluster. The format required
85 may be implementation specific, e.g puppet hieradata. Any role specific
86 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
89 description: A random string to be used as a salt when hashing to determine mappings in the ring.
94 # Compute-specific params
98 HypervisorNeutronPhysicalBridge:
101 An OVS bridge to create on each hypervisor. This defaults to br-ex the
102 same as the control plane nodes, as we have a uniform configuration of
103 the openvswitch agent. Typically should not need to be changed.
105 HypervisorNeutronPublicInterface:
107 description: What interface to add to the HypervisorNeutronPhysicalBridge.
112 - OS::TripleO::Services::CephMon
113 - OS::TripleO::Services::CephExternal
114 - OS::TripleO::Services::CinderApi
115 - OS::TripleO::Services::CinderBackup
116 - OS::TripleO::Services::CinderScheduler
117 - OS::TripleO::Services::CinderVolume
118 - OS::TripleO::Services::Core
119 - OS::TripleO::Services::Kernel
120 - OS::TripleO::Services::Keystone
121 - OS::TripleO::Services::GlanceApi
122 - OS::TripleO::Services::GlanceRegistry
123 - OS::TripleO::Services::HeatApi
124 - OS::TripleO::Services::HeatApiCfn
125 - OS::TripleO::Services::HeatApiCloudwatch
126 - OS::TripleO::Services::HeatEngine
127 - OS::TripleO::Services::MySQL
128 - OS::TripleO::Services::NeutronDhcpAgent
129 - OS::TripleO::Services::NeutronL3Agent
130 - OS::TripleO::Services::NeutronMetadataAgent
131 - OS::TripleO::Services::NeutronApi
132 - OS::TripleO::Services::NeutronCorePlugin
133 - OS::TripleO::Services::NeutronOvsAgent
134 - OS::TripleO::Services::RabbitMQ
135 - OS::TripleO::Services::HAproxy
136 - OS::TripleO::Services::Keepalived
137 - OS::TripleO::Services::Memcached
138 - OS::TripleO::Services::Pacemaker
139 - OS::TripleO::Services::Redis
140 - OS::TripleO::Services::NovaConductor
141 - OS::TripleO::Services::MongoDb
142 - OS::TripleO::Services::NovaApi
143 - OS::TripleO::Services::NovaScheduler
144 - OS::TripleO::Services::NovaConsoleauth
145 - OS::TripleO::Services::NovaVncproxy
146 - OS::TripleO::Services::Ntp
147 - OS::TripleO::Services::SwiftProxy
148 - OS::TripleO::Services::SwiftStorage
149 - OS::TripleO::Services::SwiftRingBuilder
150 - OS::TripleO::Services::Snmp
151 - OS::TripleO::Services::Timezone
152 - OS::TripleO::Services::CeilometerApi
153 - OS::TripleO::Services::CeilometerCollector
154 - OS::TripleO::Services::CeilometerExpirer
155 - OS::TripleO::Services::CeilometerAgentCentral
156 - OS::TripleO::Services::CeilometerAgentNotification
157 - OS::TripleO::Services::Horizon
158 - OS::TripleO::Services::GnocchiApi
159 - OS::TripleO::Services::GnocchiMetricd
160 - OS::TripleO::Services::GnocchiStatsd
161 - OS::Tripleo::Services::ManilaApi
162 - OS::Tripleo::Services::ManilaScheduler
163 - OS::Tripleo::Services::ManilaShare
164 - OS::TripleO::Services::AodhApi
165 - OS::TripleO::Services::AodhEvaluator
166 - OS::TripleO::Services::AodhNotifier
167 - OS::TripleO::Services::AodhListener
168 - OS::TripleO::Services::SaharaApi
169 - OS::TripleO::Services::SaharaEngine
170 - OS::TripleO::Services::IronicApi
171 - OS::TripleO::Services::IronicConductor
172 - OS::TripleO::Services::NovaIronic
173 - OS::TripleO::Services::TripleoPackages
174 - OS::TripleO::Services::TripleoFirewall
175 description: A list of service resources (configured in the Heat
176 resource_registry) which represent nested stacks
177 for each service that should get installed on the Controllers.
178 type: comma_delimited_list
182 - OS::TripleO::Services::CephClient
183 - OS::TripleO::Services::CephExternal
184 - OS::TripleO::Services::Timezone
185 - OS::TripleO::Services::Ntp
186 - OS::TripleO::Services::Snmp
187 - OS::TripleO::Services::NovaCompute
188 - OS::TripleO::Services::NovaLibvirt
189 - OS::TripleO::Services::Kernel
190 - OS::TripleO::Services::ComputeNeutronCorePlugin
191 - OS::TripleO::Services::ComputeNeutronOvsAgent
192 - OS::TripleO::Services::ComputeCeilometerAgent
193 - OS::TripleO::Services::ComputeNeutronL3Agent
194 - OS::TripleO::Services::ComputeNeutronMetadataAgent
195 - OS::TripleO::Services::TripleoPackages
196 - OS::TripleO::Services::TripleoFirewall
197 description: A list of service resources (configured in the Heat
198 resource_registry) which represent nested stacks
199 for each service that should get installed on the Compute Nodes.
200 type: comma_delimited_list
202 # Block storage specific parameters
206 BlockStorageExtraConfig:
209 BlockStorage specific configuration to inject into the cluster. Same
210 structure as ExtraConfig.
212 BlockStorageServices:
214 - OS::TripleO::Services::CinderVolume
215 - OS::TripleO::Services::Kernel
216 - OS::TripleO::Services::Ntp
217 - OS::TripleO::Services::Timezone
218 - OS::TripleO::Services::Snmp
219 - OS::TripleO::Services::TripleoPackages
220 - OS::TripleO::Services::TripleoFirewall
221 description: A list of service resources (configured in the Heat
222 resource_registry) which represent nested stacks
223 for each service that should get installed on the BlockStorage nodes.
224 type: comma_delimited_list
226 # Object storage specific parameters
230 ObjectStorageExtraConfig:
233 ObjectStorage specific configuration to inject into the cluster. Same
234 structure as ExtraConfig.
236 ObjectStorageServices:
238 - OS::TripleO::Services::Kernel
239 - OS::TripleO::Services::Ntp
240 - OS::TripleO::Services::SwiftStorage
241 - OS::TripleO::Services::SwiftRingBuilder
242 - OS::TripleO::Services::Snmp
243 - OS::TripleO::Services::Timezone
244 - OS::TripleO::Services::TripleoPackages
245 - OS::TripleO::Services::TripleoFirewall
246 description: A list of service resources (configured in the Heat
247 resource_registry) which represent nested stacks
248 for each service that should get installed on the ObjectStorage nodes.
249 Note this role currently only supports steps 2, 3 and 4 configuration.
250 type: comma_delimited_list
253 # Ceph storage specific parameters
257 CephStorageExtraConfig:
260 CephStorage specific configuration to inject into the cluster. Same
261 structure as ExtraConfig.
265 - OS::TripleO::Services::CephOSD
266 - OS::TripleO::Services::Kernel
267 - OS::TripleO::Services::Ntp
268 - OS::TripleO::Services::Timezone
269 - OS::TripleO::Services::TripleoPackages
270 - OS::TripleO::Services::TripleoFirewall
271 description: A list of service resources (configured in the Heat
272 resource_registry) which represent nested stacks
273 for each service that should get installed on the CephStorage nodes.
274 type: comma_delimited_list
276 # Hostname format for each role
277 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
278 # and %stackname% is replaced with OS::stack_name in the template below.
279 # If you want to use the heat generated names, pass '' (empty string).
280 ControllerHostnameFormat:
282 description: Format for Controller node hostnames
283 default: '%stackname%-controller-%index%'
284 ComputeHostnameFormat:
286 description: Format for Compute node hostnames
287 default: '%stackname%-novacompute-%index%'
288 BlockStorageHostnameFormat:
290 description: Format for BlockStorage node hostnames
291 default: '%stackname%-blockstorage-%index%'
292 ObjectStorageHostnameFormat:
294 description: Format for SwiftStorage node hostnames
295 default: '%stackname%-objectstorage-%index%'
296 CephStorageHostnameFormat:
298 description: Format for CephStorage node hostnames
299 default: '%stackname%-cephstorage-%index%'
301 # Identifiers to trigger tasks on nodes
306 Setting to a previously unused value during stack-update will trigger
307 package update on all nodes
312 Setting this to a unique value will re-run any deployment tasks which
313 perform configuration on a Heat stack-update.
315 # If you want to remove a specific node from a resource group, you can pass
316 # the node name or id as a <Group>RemovalPolicies parameter, for example:
317 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
318 ControllerRemovalPolicies:
322 List of resources to be removed from ControllerResourceGroup when
323 doing an update which requires removal of specific resources.
324 ComputeRemovalPolicies:
328 List of resources to be removed from ComputeResourceGroup when
329 doing an update which requires removal of specific resources.
330 BlockStorageRemovalPolicies:
334 List of resources to be removed from BlockStorageResourceGroup when
335 doing an update which requires removal of specific resources.
336 ObjectStorageRemovalPolicies:
340 List of resources to be removed from ObjectStorageResourceGroup when
341 doing an update which requires removal of specific resources.
342 CephStorageRemovalPolicies:
346 List of resources to be removed from CephStorageResourceGroup when
347 doing an update which requires removal of specific resources.
351 description: Do not use deprecated params, they will be removed.
353 - controllerExtraConfig
358 HeatAuthEncryptionKey:
359 type: OS::Heat::RandomString
362 type: OS::Heat::RandomString
367 type: OS::Heat::RandomString
372 type: OS::TripleO::ServiceNetMap
375 type: OS::TripleO::EndpointMap
377 CloudName: {get_param: CloudName}
378 NetIpMap: {get_attr: [VipMap, net_ip_map]}
379 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
381 ControllerServiceChain:
382 type: OS::TripleO::Services
384 Services: {get_param: ControllerServices}
385 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
386 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
387 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
390 type: OS::Heat::ResourceGroup
393 count: {get_param: ControllerCount}
394 removal_policies: {get_param: ControllerRemovalPolicies}
396 type: OS::TripleO::Controller
398 CloudDomain: {get_param: CloudDomain}
399 controllerExtraConfig: {get_param: controllerExtraConfig}
400 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
401 HorizonSecret: {get_resource: HorizonSecret}
402 PcsdPassword: {get_resource: PcsdPassword}
403 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
404 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
405 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
406 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
409 template: {get_param: ControllerHostnameFormat}
411 '%stackname%': {get_param: 'OS::stack_name'}
413 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
414 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
417 type: OS::TripleO::Services
419 Services: {get_param: ComputeServices}
420 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
421 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
422 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
425 type: OS::Heat::ResourceGroup
428 count: {get_param: ComputeCount}
429 removal_policies: {get_param: ComputeRemovalPolicies}
431 type: OS::TripleO::Compute
433 CloudDomain: {get_param: CloudDomain}
434 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
435 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
436 # L3 HA and Failover is not relevant for Computes, should be removed
437 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
438 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
439 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
440 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
443 template: {get_param: ComputeHostnameFormat}
445 '%stackname%': {get_param: 'OS::stack_name'}
447 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
448 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
450 BlockStorageServiceChain:
451 type: OS::TripleO::Services
453 Services: {get_param: BlockStorageServices}
454 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
455 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
456 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
459 type: OS::Heat::ResourceGroup
462 count: {get_param: BlockStorageCount}
463 removal_policies: {get_param: BlockStorageRemovalPolicies}
465 type: OS::TripleO::BlockStorage
467 UpdateIdentifier: {get_param: UpdateIdentifier}
470 template: {get_param: BlockStorageHostnameFormat}
472 '%stackname%': {get_param: 'OS::stack_name'}
473 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
474 ExtraConfig: {get_param: ExtraConfig}
475 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
476 CloudDomain: {get_param: CloudDomain}
477 ServerMetadata: {get_param: ServerMetadata}
479 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
480 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
482 ObjectStorageServiceChain:
483 type: OS::TripleO::Services
485 Services: {get_param: ObjectStorageServices}
486 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
487 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
488 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
491 type: OS::Heat::ResourceGroup
494 count: {get_param: ObjectStorageCount}
495 removal_policies: {get_param: ObjectStorageRemovalPolicies}
497 type: OS::TripleO::ObjectStorage
499 HashSuffix: {get_param: SwiftHashSuffix}
500 UpdateIdentifier: {get_param: UpdateIdentifier}
501 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
504 template: {get_param: ObjectStorageHostnameFormat}
506 '%stackname%': {get_param: 'OS::stack_name'}
507 ExtraConfig: {get_param: ExtraConfig}
508 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
509 CloudDomain: {get_param: CloudDomain}
510 ServerMetadata: {get_param: ServerMetadata}
512 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
513 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
515 CephStorageServiceChain:
516 type: OS::TripleO::Services
518 Services: {get_param: CephStorageServices}
519 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
520 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
521 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
524 type: OS::Heat::ResourceGroup
527 count: {get_param: CephStorageCount}
528 removal_policies: {get_param: CephStorageRemovalPolicies}
530 type: OS::TripleO::CephStorage
532 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
533 UpdateIdentifier: {get_param: UpdateIdentifier}
536 template: {get_param: CephStorageHostnameFormat}
538 '%stackname%': {get_param: 'OS::stack_name'}
539 ExtraConfig: {get_param: ExtraConfig}
540 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
541 CloudDomain: {get_param: CloudDomain}
542 ServerMetadata: {get_param: ServerMetadata}
544 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
545 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
548 type: OS::TripleO::Network::Ports::NetIpListMap
550 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
551 ExternalIpList: {get_attr: [Controller, external_ip_address]}
552 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
553 StorageIpList: {get_attr: [Controller, storage_ip_address]}
554 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
555 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
556 ManagementIpList: {get_attr: [Controller, management_ip_address]}
559 type: OS::TripleO::AllNodes::SoftwareConfig
564 - {get_attr: [Compute, hosts_entry]}
567 - {get_attr: [Controller, hosts_entry]}
570 - {get_attr: [BlockStorage, hosts_entry]}
573 - {get_attr: [ObjectStorage, hosts_entry]}
576 - {get_attr: [CephStorage, hosts_entry]}
577 controller_ips: {get_attr: [Controller, ip_address]}
578 controller_names: {get_attr: [Controller, hostname]}
579 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
580 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
581 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
582 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
583 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
584 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
585 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
586 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
587 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
588 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
589 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
590 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
591 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
592 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
593 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
594 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
595 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
596 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
597 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
598 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
599 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
600 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
601 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
602 ceph_mon_node_names: {get_attr: [Controller, hostname]}
603 DeployIdentifier: {get_param: DeployIdentifier}
604 UpdateIdentifier: {get_param: UpdateIdentifier}
607 type: OS::Heat::RandomString
612 type: OS::Heat::RandomString
615 salt: {get_param: RabbitCookieSalt}
618 type: OS::TripleO::DefaultPasswords
620 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
621 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
622 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
623 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
624 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
626 # creates the network architecture
628 type: OS::TripleO::Network
631 type: OS::Neutron::Port
634 name: control_virtual_ip
635 network: {get_param: NeutronControlPlaneID}
636 fixed_ips: {get_param: ControlFixedIPs}
637 replacement_policy: AUTO
641 type: OS::TripleO::Network::Ports::RedisVipPort
643 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
644 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
645 PortName: redis_virtual_ip
646 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
649 # The public VIP is on the External net, falls back to ctlplane
652 type: OS::TripleO::Network::Ports::ExternalVipPort
654 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
655 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
656 PortName: public_virtual_ip
657 FixedIPs: {get_param: PublicVirtualFixedIPs}
659 InternalApiVirtualIP:
661 type: OS::TripleO::Network::Ports::InternalApiVipPort
663 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
664 PortName: internal_api_virtual_ip
665 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
669 type: OS::TripleO::Network::Ports::StorageVipPort
671 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
672 PortName: storage_virtual_ip
673 FixedIPs: {get_param: StorageVirtualFixedIPs}
675 StorageMgmtVirtualIP:
677 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
679 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
680 PortName: storage_management_virtual_ip
681 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
684 type: OS::TripleO::Network::Ports::NetVipMap
686 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
687 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
688 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
689 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
690 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
691 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
692 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
693 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
694 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
695 # No tenant or management VIP required
698 type: OS::TripleO::VipConfig
701 type: OS::Heat::StructuredDeployments
704 config: {get_resource: VipConfig}
705 servers: {get_attr: [Controller, attributes, nova_server_resource]}
707 # service VIP mappings
708 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
709 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
710 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
711 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
712 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
713 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
714 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
715 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
716 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
717 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
718 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
719 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
720 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
721 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
722 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
723 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
724 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
725 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
726 # direct configuration of Virtual IPs for each network
727 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
728 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
729 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
730 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
731 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
732 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
733 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
735 ControllerSwiftDeployment:
736 type: OS::Heat::StructuredDeployments
738 name: ControllerSwiftDeployment
739 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
740 servers: {get_attr: [Controller, attributes, nova_server_resource]}
742 ObjectStorageSwiftDeployment:
743 type: OS::Heat::StructuredDeployments
745 name: ObjectStorageSwiftDeployment
746 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
747 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
749 SwiftDevicesAndProxyConfig:
750 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
752 controller_swift_devices: {get_attr: [Controller, swift_device]}
753 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
754 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
756 ControllerAllNodesDeployment:
757 type: OS::Heat::StructuredDeployments
759 name: ControllerAllNodesDeployment
760 config: {get_attr: [allNodesConfig, config_id]}
761 servers: {get_attr: [Controller, attributes, nova_server_resource]}
763 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
764 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
766 ComputeAllNodesDeployment:
767 type: OS::Heat::StructuredDeployments
769 name: ComputeAllNodesDeployment
770 config: {get_attr: [allNodesConfig, config_id]}
771 servers: {get_attr: [Compute, attributes, nova_server_resource]}
773 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
774 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
776 BlockStorageAllNodesDeployment:
777 type: OS::Heat::StructuredDeployments
779 name: BlockStorageAllNodesDeployment
780 config: {get_attr: [allNodesConfig, config_id]}
781 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
783 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
784 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
786 ObjectStorageAllNodesDeployment:
787 type: OS::Heat::StructuredDeployments
789 name: ObjectStorageAllNodesDeployment
790 config: {get_attr: [allNodesConfig, config_id]}
791 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
793 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
794 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
796 CephStorageAllNodesDeployment:
797 type: OS::Heat::StructuredDeployments
799 name: CephStorageAllNodesDeployment
800 config: {get_attr: [allNodesConfig, config_id]}
801 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
803 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
804 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
806 # All Nodes Validations
807 AllNodesValidationConfig:
808 type: OS::TripleO::AllNodes::Validation
813 - - {get_attr: [Controller, resource.0.external_ip_address]}
814 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
815 - {get_attr: [Controller, resource.0.storage_ip_address]}
816 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
817 - {get_attr: [Controller, resource.0.tenant_ip_address]}
818 - {get_attr: [Controller, resource.0.management_ip_address]}
820 ControllerAllNodesValidationDeployment:
821 type: OS::Heat::StructuredDeployments
822 depends_on: ControllerAllNodesDeployment
824 name: ControllerAllNodesValidationDeployment
825 config: {get_resource: AllNodesValidationConfig}
826 servers: {get_attr: [Controller, attributes, nova_server_resource]}
828 ComputeAllNodesValidationDeployment:
829 type: OS::Heat::StructuredDeployments
830 depends_on: ComputeAllNodesDeployment
832 name: ComputeAllNodesValidationDeployment
833 config: {get_resource: AllNodesValidationConfig}
834 servers: {get_attr: [Compute, attributes, nova_server_resource]}
836 BlockStorageAllNodesValidationDeployment:
837 type: OS::Heat::StructuredDeployments
838 depends_on: BlockStorageAllNodesDeployment
840 name: BlockStorageAllNodesValidationDeployment
841 config: {get_resource: AllNodesValidationConfig}
842 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
844 ObjectStorageAllNodesValidationDeployment:
845 type: OS::Heat::StructuredDeployments
846 depends_on: ObjectStorageAllNodesDeployment
848 name: ObjectStorageAllNodesValidationDeployment
849 config: {get_resource: AllNodesValidationConfig}
850 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
852 CephStorageAllNodesValidationDeployment:
853 type: OS::Heat::StructuredDeployments
854 depends_on: CephStorageAllNodesDeployment
856 name: CephStorageAllNodesValidationDeployment
857 config: {get_resource: AllNodesValidationConfig}
858 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
861 type: OS::TripleO::Tasks::UpdateWorkflow
863 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
864 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
865 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
866 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
867 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
869 deploy_identifier: {get_param: DeployIdentifier}
870 update_identifier: {get_param: UpdateIdentifier}
872 # Optional ExtraConfig for all nodes - all roles are passed in here, but
873 # the nested template may configure each role differently (or not at all)
875 type: OS::TripleO::AllNodesExtraConfig
878 - ComputeAllNodesValidationDeployment
879 - BlockStorageAllNodesValidationDeployment
880 - ObjectStorageAllNodesValidationDeployment
881 - CephStorageAllNodesValidationDeployment
882 - ControllerAllNodesValidationDeployment
884 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
885 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
886 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
887 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
888 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
890 # Nested stack deployment runs after all other controller deployments
891 ControllerNodesPostDeployment:
892 type: OS::TripleO::ControllerPostDeployment
893 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
895 servers: {get_attr: [Controller, attributes, nova_server_resource]}
896 RoleData: {get_attr: [ControllerServiceChain, role_data]}
898 ComputeNodesPostDeployment:
899 type: OS::TripleO::ComputePostDeployment
900 depends_on: [ComputeAllNodesDeployment]
902 servers: {get_attr: [Compute, attributes, nova_server_resource]}
903 RoleData: {get_attr: [ComputeServiceChain, role_data]}
905 ObjectStorageNodesPostDeployment:
906 type: OS::TripleO::ObjectStoragePostDeployment
907 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
909 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
910 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
912 BlockStorageNodesPostDeployment:
913 type: OS::TripleO::BlockStoragePostDeployment
914 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
916 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
917 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
919 CephStorageNodesPostDeployment:
920 type: OS::TripleO::CephStoragePostDeployment
921 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
923 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
924 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
928 description: URL for the Overcloud Keystone service
929 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
931 description: Keystone Admin VIP endpoint
932 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
934 description: Controller VIP for public API endpoints
935 value: {get_attr: [VipMap, net_ip_map, external]}
937 description: VIP for Aodh API internal endpoint
938 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
939 CeilometerInternalVip:
940 description: VIP for Ceilometer API internal endpoint
941 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
943 description: VIP for Cinder API internal endpoint
944 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
946 description: VIP for Glance API internal endpoint
947 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
949 description: VIP for Gnocchi API internal endpoint
950 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
952 description: VIP for Heat API internal endpoint
953 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
955 description: VIP for Ironic API internal endpoint
956 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
958 description: VIP for Keystone API internal endpoint
959 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
961 description: VIP for Manila API internal endpoint
962 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
964 description: VIP for Neutron API internal endpoint
965 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
967 description: VIP for Nova API internal endpoint
968 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
970 description: VIP for Sahara API internal endpoint
971 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
973 description: VIP for Swift Proxy internal endpoint
974 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
977 Mapping of the resources with the needed info for their endpoints.
978 This includes the protocol used, the IP, port and also a full
979 representation of the URI.
980 value: {get_attr: [EndpointMap, endpoint_map]}
983 The content that should be appended to your /etc/hosts if you want to get
984 hostname-based access to the deployed nodes (useful for testing without
986 value: {get_attr: [allNodesConfig, hosts_entries]}
988 description: The services enabled on each role
990 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
991 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
992 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
993 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
994 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}