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'}]
62 Control the IP allocation for the virtual IP used by Redis. E.g.
63 [{'ip_address':'1.2.3.4'}]
66 default: 'localdomain'
69 The DNS domain used for the hosts. This should match the dhcp_domain
70 configured in the Undercloud neutron. Defaults to localdomain.
74 Extra properties or metadata passed to Nova for the created nodes in
75 the overcloud. It's accessible via the Nova metadata API.
78 # Controller-specific params
82 controllerExtraConfig:
85 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
90 Additional configuration to inject into the cluster. The format required
91 may be implementation specific, e.g puppet hieradata. Any role specific
92 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
95 # Compute-specific params
99 HypervisorNeutronPhysicalBridge:
102 An OVS bridge to create on each hypervisor. This defaults to br-ex the
103 same as the control plane nodes, as we have a uniform configuration of
104 the openvswitch agent. Typically should not need to be changed.
106 HypervisorNeutronPublicInterface:
108 description: What interface to add to the HypervisorNeutronPhysicalBridge.
113 - OS::TripleO::Services::CephMon
114 - OS::TripleO::Services::CephExternal
115 - OS::TripleO::Services::CinderApi
116 - OS::TripleO::Services::CinderBackup
117 - OS::TripleO::Services::CinderScheduler
118 - OS::TripleO::Services::CinderVolume
119 - OS::TripleO::Services::Core
120 - OS::TripleO::Services::Kernel
121 - OS::TripleO::Services::Keystone
122 - OS::TripleO::Services::GlanceApi
123 - OS::TripleO::Services::GlanceRegistry
124 - OS::TripleO::Services::HeatApi
125 - OS::TripleO::Services::HeatApiCfn
126 - OS::TripleO::Services::HeatApiCloudwatch
127 - OS::TripleO::Services::HeatEngine
128 - OS::TripleO::Services::MySQL
129 - OS::TripleO::Services::NeutronDhcpAgent
130 - OS::TripleO::Services::NeutronL3Agent
131 - OS::TripleO::Services::NeutronMetadataAgent
132 - OS::TripleO::Services::NeutronApi
133 - OS::TripleO::Services::NeutronCorePlugin
134 - OS::TripleO::Services::NeutronOvsAgent
135 - OS::TripleO::Services::RabbitMQ
136 - OS::TripleO::Services::HAproxy
137 - OS::TripleO::Services::Keepalived
138 - OS::TripleO::Services::Memcached
139 - OS::TripleO::Services::Pacemaker
140 - OS::TripleO::Services::Redis
141 - OS::TripleO::Services::NovaConductor
142 - OS::TripleO::Services::MongoDb
143 - OS::TripleO::Services::NovaApi
144 - OS::TripleO::Services::NovaScheduler
145 - OS::TripleO::Services::NovaConsoleauth
146 - OS::TripleO::Services::NovaVncproxy
147 - OS::TripleO::Services::Ntp
148 - OS::TripleO::Services::SwiftProxy
149 - OS::TripleO::Services::SwiftStorage
150 - OS::TripleO::Services::SwiftRingBuilder
151 - OS::TripleO::Services::Snmp
152 - OS::TripleO::Services::Timezone
153 - OS::TripleO::Services::CeilometerApi
154 - OS::TripleO::Services::CeilometerCollector
155 - OS::TripleO::Services::CeilometerExpirer
156 - OS::TripleO::Services::CeilometerAgentCentral
157 - OS::TripleO::Services::CeilometerAgentNotification
158 - OS::TripleO::Services::Horizon
159 - OS::TripleO::Services::GnocchiApi
160 - OS::TripleO::Services::GnocchiMetricd
161 - OS::TripleO::Services::GnocchiStatsd
162 - OS::Tripleo::Services::ManilaApi
163 - OS::Tripleo::Services::ManilaScheduler
164 - OS::Tripleo::Services::ManilaShare
165 - OS::TripleO::Services::AodhApi
166 - OS::TripleO::Services::AodhEvaluator
167 - OS::TripleO::Services::AodhNotifier
168 - OS::TripleO::Services::AodhListener
169 - OS::TripleO::Services::SaharaApi
170 - OS::TripleO::Services::SaharaEngine
171 - OS::TripleO::Services::IronicApi
172 - OS::TripleO::Services::IronicConductor
173 - OS::TripleO::Services::NovaIronic
174 - OS::TripleO::Services::TripleoPackages
175 - OS::TripleO::Services::TripleoFirewall
176 - OS::TripleO::Services::OpenDaylight
177 description: A list of service resources (configured in the Heat
178 resource_registry) which represent nested stacks
179 for each service that should get installed on the Controllers.
180 type: comma_delimited_list
184 - OS::TripleO::Services::CephClient
185 - OS::TripleO::Services::CephExternal
186 - OS::TripleO::Services::Timezone
187 - OS::TripleO::Services::Ntp
188 - OS::TripleO::Services::Snmp
189 - OS::TripleO::Services::NovaCompute
190 - OS::TripleO::Services::NovaLibvirt
191 - OS::TripleO::Services::Kernel
192 - OS::TripleO::Services::ComputeNeutronCorePlugin
193 - OS::TripleO::Services::ComputeNeutronOvsAgent
194 - OS::TripleO::Services::ComputeCeilometerAgent
195 - OS::TripleO::Services::ComputeNeutronL3Agent
196 - OS::TripleO::Services::ComputeNeutronMetadataAgent
197 - OS::TripleO::Services::TripleoPackages
198 - OS::TripleO::Services::TripleoFirewall
199 - OS::TripleO::Services::NeutronSriovAgent
200 - OS::TripleO::Services::OpenDaylightOvs
201 description: A list of service resources (configured in the Heat
202 resource_registry) which represent nested stacks
203 for each service that should get installed on the Compute Nodes.
204 type: comma_delimited_list
206 # Block storage specific parameters
210 BlockStorageExtraConfig:
213 BlockStorage specific configuration to inject into the cluster. Same
214 structure as ExtraConfig.
216 BlockStorageServices:
218 - OS::TripleO::Services::CinderVolume
219 - OS::TripleO::Services::Kernel
220 - OS::TripleO::Services::Ntp
221 - OS::TripleO::Services::Timezone
222 - OS::TripleO::Services::Snmp
223 - OS::TripleO::Services::TripleoPackages
224 - OS::TripleO::Services::TripleoFirewall
225 description: A list of service resources (configured in the Heat
226 resource_registry) which represent nested stacks
227 for each service that should get installed on the BlockStorage nodes.
228 type: comma_delimited_list
230 # Object storage specific parameters
234 ObjectStorageExtraConfig:
237 ObjectStorage specific configuration to inject into the cluster. Same
238 structure as ExtraConfig.
240 ObjectStorageServices:
242 - OS::TripleO::Services::Kernel
243 - OS::TripleO::Services::Ntp
244 - OS::TripleO::Services::SwiftStorage
245 - OS::TripleO::Services::SwiftRingBuilder
246 - OS::TripleO::Services::Snmp
247 - OS::TripleO::Services::Timezone
248 - OS::TripleO::Services::TripleoPackages
249 - OS::TripleO::Services::TripleoFirewall
250 description: A list of service resources (configured in the Heat
251 resource_registry) which represent nested stacks
252 for each service that should get installed on the ObjectStorage nodes.
253 Note this role currently only supports steps 2, 3 and 4 configuration.
254 type: comma_delimited_list
257 # Ceph storage specific parameters
261 CephStorageExtraConfig:
264 CephStorage specific configuration to inject into the cluster. Same
265 structure as ExtraConfig.
269 - OS::TripleO::Services::CephOSD
270 - OS::TripleO::Services::Kernel
271 - OS::TripleO::Services::Ntp
272 - OS::TripleO::Services::Timezone
273 - OS::TripleO::Services::TripleoPackages
274 - OS::TripleO::Services::TripleoFirewall
275 description: A list of service resources (configured in the Heat
276 resource_registry) which represent nested stacks
277 for each service that should get installed on the CephStorage nodes.
278 type: comma_delimited_list
280 # Hostname format for each role
281 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
282 # and %stackname% is replaced with OS::stack_name in the template below.
283 # If you want to use the heat generated names, pass '' (empty string).
284 ControllerHostnameFormat:
286 description: Format for Controller node hostnames
287 default: '%stackname%-controller-%index%'
288 ComputeHostnameFormat:
290 description: Format for Compute node hostnames
291 default: '%stackname%-novacompute-%index%'
292 BlockStorageHostnameFormat:
294 description: Format for BlockStorage node hostnames
295 default: '%stackname%-blockstorage-%index%'
296 ObjectStorageHostnameFormat:
298 description: Format for SwiftStorage node hostnames
299 default: '%stackname%-objectstorage-%index%'
300 CephStorageHostnameFormat:
302 description: Format for CephStorage node hostnames
303 default: '%stackname%-cephstorage-%index%'
305 # Identifiers to trigger tasks on nodes
310 Setting to a previously unused value during stack-update will trigger
311 package update on all nodes
316 Setting this to a unique value will re-run any deployment tasks which
317 perform configuration on a Heat stack-update.
319 # If you want to remove a specific node from a resource group, you can pass
320 # the node name or id as a <Group>RemovalPolicies parameter, for example:
321 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
322 ControllerRemovalPolicies:
326 List of resources to be removed from ControllerResourceGroup when
327 doing an update which requires removal of specific resources.
328 ComputeRemovalPolicies:
332 List of resources to be removed from ComputeResourceGroup when
333 doing an update which requires removal of specific resources.
334 BlockStorageRemovalPolicies:
338 List of resources to be removed from BlockStorageResourceGroup when
339 doing an update which requires removal of specific resources.
340 ObjectStorageRemovalPolicies:
344 List of resources to be removed from ObjectStorageResourceGroup when
345 doing an update which requires removal of specific resources.
346 CephStorageRemovalPolicies:
350 List of resources to be removed from CephStorageResourceGroup when
351 doing an update which requires removal of specific resources.
355 description: Do not use deprecated params, they will be removed.
357 - controllerExtraConfig
362 HeatAuthEncryptionKey:
363 type: OS::Heat::RandomString
366 type: OS::Heat::RandomString
371 type: OS::Heat::RandomString
376 type: OS::TripleO::ServiceNetMap
379 type: OS::TripleO::EndpointMap
381 CloudName: {get_param: CloudName}
382 NetIpMap: {get_attr: [VipMap, net_ip_map]}
383 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
385 ControllerServiceChain:
386 type: OS::TripleO::Services
388 Services: {get_param: ControllerServices}
389 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
390 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
391 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
394 type: OS::Heat::ResourceGroup
397 count: {get_param: ControllerCount}
398 removal_policies: {get_param: ControllerRemovalPolicies}
400 type: OS::TripleO::Controller
402 CloudDomain: {get_param: CloudDomain}
403 controllerExtraConfig: {get_param: controllerExtraConfig}
404 HorizonSecret: {get_resource: HorizonSecret}
405 PcsdPassword: {get_resource: PcsdPassword}
406 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
407 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
408 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
409 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
412 template: {get_param: ControllerHostnameFormat}
414 '%stackname%': {get_param: 'OS::stack_name'}
416 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
417 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
420 type: OS::TripleO::Services
422 Services: {get_param: ComputeServices}
423 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
424 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
425 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
428 type: OS::Heat::ResourceGroup
431 count: {get_param: ComputeCount}
432 removal_policies: {get_param: ComputeRemovalPolicies}
434 type: OS::TripleO::Compute
436 CloudDomain: {get_param: CloudDomain}
437 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
438 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
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 UpdateIdentifier: {get_param: UpdateIdentifier}
500 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
503 template: {get_param: ObjectStorageHostnameFormat}
505 '%stackname%': {get_param: 'OS::stack_name'}
506 ExtraConfig: {get_param: ExtraConfig}
507 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
508 CloudDomain: {get_param: CloudDomain}
509 ServerMetadata: {get_param: ServerMetadata}
511 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
512 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
514 CephStorageServiceChain:
515 type: OS::TripleO::Services
517 Services: {get_param: CephStorageServices}
518 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
519 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
520 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
523 type: OS::Heat::ResourceGroup
526 count: {get_param: CephStorageCount}
527 removal_policies: {get_param: CephStorageRemovalPolicies}
529 type: OS::TripleO::CephStorage
531 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
532 UpdateIdentifier: {get_param: UpdateIdentifier}
535 template: {get_param: CephStorageHostnameFormat}
537 '%stackname%': {get_param: 'OS::stack_name'}
538 ExtraConfig: {get_param: ExtraConfig}
539 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
540 CloudDomain: {get_param: CloudDomain}
541 ServerMetadata: {get_param: ServerMetadata}
543 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
544 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
547 type: OS::TripleO::Network::Ports::NetIpListMap
549 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
550 ExternalIpList: {get_attr: [Controller, external_ip_address]}
551 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
552 StorageIpList: {get_attr: [Controller, storage_ip_address]}
553 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
554 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
555 ManagementIpList: {get_attr: [Controller, management_ip_address]}
558 type: OS::TripleO::AllNodes::SoftwareConfig
563 - {get_attr: [Compute, hosts_entry]}
566 - {get_attr: [Controller, hosts_entry]}
569 - {get_attr: [BlockStorage, hosts_entry]}
572 - {get_attr: [ObjectStorage, hosts_entry]}
575 - {get_attr: [CephStorage, hosts_entry]}
576 controller_ips: {get_attr: [Controller, ip_address]}
577 controller_names: {get_attr: [Controller, hostname]}
578 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
579 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
580 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
581 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
582 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
583 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
584 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
585 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
586 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
587 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
588 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
589 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
590 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
591 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
592 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
593 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
594 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
595 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
596 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
597 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
598 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
599 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
600 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
601 opendaylight_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
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]}
648 FixedIPs: {get_param: RedisVirtualFixedIPs}
650 # The public VIP is on the External net, falls back to ctlplane
653 type: OS::TripleO::Network::Ports::ExternalVipPort
655 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
656 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
657 PortName: public_virtual_ip
658 FixedIPs: {get_param: PublicVirtualFixedIPs}
660 InternalApiVirtualIP:
662 type: OS::TripleO::Network::Ports::InternalApiVipPort
664 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
665 PortName: internal_api_virtual_ip
666 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
670 type: OS::TripleO::Network::Ports::StorageVipPort
672 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
673 PortName: storage_virtual_ip
674 FixedIPs: {get_param: StorageVirtualFixedIPs}
676 StorageMgmtVirtualIP:
678 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
680 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
681 PortName: storage_management_virtual_ip
682 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
685 type: OS::TripleO::Network::Ports::NetVipMap
687 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
688 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
689 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
690 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
691 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
692 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
693 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
694 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
695 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
696 # No tenant or management VIP required
699 type: OS::TripleO::VipConfig
702 type: OS::Heat::StructuredDeployments
705 config: {get_resource: VipConfig}
706 servers: {get_attr: [Controller, attributes, nova_server_resource]}
708 # service VIP mappings
709 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
710 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
711 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
712 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
713 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
714 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
715 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
716 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
717 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
718 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
719 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
720 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
721 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
722 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
723 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
724 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
725 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
726 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
727 # direct configuration of Virtual IPs for each network
728 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
729 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
730 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
731 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
732 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
733 opendaylight_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
734 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
735 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
737 ControllerSwiftDeployment:
738 type: OS::Heat::StructuredDeployments
740 name: ControllerSwiftDeployment
741 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
742 servers: {get_attr: [Controller, attributes, nova_server_resource]}
744 ObjectStorageSwiftDeployment:
745 type: OS::Heat::StructuredDeployments
747 name: ObjectStorageSwiftDeployment
748 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
749 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
751 SwiftDevicesAndProxyConfig:
752 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
754 controller_swift_devices: {get_attr: [Controller, swift_device]}
755 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
756 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
758 ControllerAllNodesDeployment:
759 type: OS::Heat::StructuredDeployments
761 name: ControllerAllNodesDeployment
762 config: {get_attr: [allNodesConfig, config_id]}
763 servers: {get_attr: [Controller, attributes, nova_server_resource]}
765 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
766 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
768 ComputeAllNodesDeployment:
769 type: OS::Heat::StructuredDeployments
771 name: ComputeAllNodesDeployment
772 config: {get_attr: [allNodesConfig, config_id]}
773 servers: {get_attr: [Compute, attributes, nova_server_resource]}
775 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
776 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
778 BlockStorageAllNodesDeployment:
779 type: OS::Heat::StructuredDeployments
781 name: BlockStorageAllNodesDeployment
782 config: {get_attr: [allNodesConfig, config_id]}
783 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
785 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
786 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
788 ObjectStorageAllNodesDeployment:
789 type: OS::Heat::StructuredDeployments
791 name: ObjectStorageAllNodesDeployment
792 config: {get_attr: [allNodesConfig, config_id]}
793 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
795 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
796 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
798 CephStorageAllNodesDeployment:
799 type: OS::Heat::StructuredDeployments
801 name: CephStorageAllNodesDeployment
802 config: {get_attr: [allNodesConfig, config_id]}
803 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
805 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
806 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
808 # All Nodes Validations
809 AllNodesValidationConfig:
810 type: OS::TripleO::AllNodes::Validation
815 - - {get_attr: [Controller, resource.0.external_ip_address]}
816 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
817 - {get_attr: [Controller, resource.0.storage_ip_address]}
818 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
819 - {get_attr: [Controller, resource.0.tenant_ip_address]}
820 - {get_attr: [Controller, resource.0.management_ip_address]}
822 ControllerAllNodesValidationDeployment:
823 type: OS::Heat::StructuredDeployments
824 depends_on: ControllerAllNodesDeployment
826 name: ControllerAllNodesValidationDeployment
827 config: {get_resource: AllNodesValidationConfig}
828 servers: {get_attr: [Controller, attributes, nova_server_resource]}
830 ComputeAllNodesValidationDeployment:
831 type: OS::Heat::StructuredDeployments
832 depends_on: ComputeAllNodesDeployment
834 name: ComputeAllNodesValidationDeployment
835 config: {get_resource: AllNodesValidationConfig}
836 servers: {get_attr: [Compute, attributes, nova_server_resource]}
838 BlockStorageAllNodesValidationDeployment:
839 type: OS::Heat::StructuredDeployments
840 depends_on: BlockStorageAllNodesDeployment
842 name: BlockStorageAllNodesValidationDeployment
843 config: {get_resource: AllNodesValidationConfig}
844 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
846 ObjectStorageAllNodesValidationDeployment:
847 type: OS::Heat::StructuredDeployments
848 depends_on: ObjectStorageAllNodesDeployment
850 name: ObjectStorageAllNodesValidationDeployment
851 config: {get_resource: AllNodesValidationConfig}
852 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
854 CephStorageAllNodesValidationDeployment:
855 type: OS::Heat::StructuredDeployments
856 depends_on: CephStorageAllNodesDeployment
858 name: CephStorageAllNodesValidationDeployment
859 config: {get_resource: AllNodesValidationConfig}
860 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
863 type: OS::TripleO::Tasks::UpdateWorkflow
865 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
866 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
867 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
868 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
869 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
871 deploy_identifier: {get_param: DeployIdentifier}
872 update_identifier: {get_param: UpdateIdentifier}
874 # Optional ExtraConfig for all nodes - all roles are passed in here, but
875 # the nested template may configure each role differently (or not at all)
877 type: OS::TripleO::AllNodesExtraConfig
880 - ComputeAllNodesValidationDeployment
881 - BlockStorageAllNodesValidationDeployment
882 - ObjectStorageAllNodesValidationDeployment
883 - CephStorageAllNodesValidationDeployment
884 - ControllerAllNodesValidationDeployment
886 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
887 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
888 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
889 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
890 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
892 # Nested stack deployment runs after all other controller deployments
893 ControllerNodesPostDeployment:
894 type: OS::TripleO::ControllerPostDeployment
895 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
897 servers: {get_attr: [Controller, attributes, nova_server_resource]}
898 RoleData: {get_attr: [ControllerServiceChain, role_data]}
900 ComputeNodesPostDeployment:
901 type: OS::TripleO::ComputePostDeployment
902 depends_on: [ComputeAllNodesDeployment]
904 servers: {get_attr: [Compute, attributes, nova_server_resource]}
905 RoleData: {get_attr: [ComputeServiceChain, role_data]}
907 ObjectStorageNodesPostDeployment:
908 type: OS::TripleO::ObjectStoragePostDeployment
909 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
911 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
912 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
914 BlockStorageNodesPostDeployment:
915 type: OS::TripleO::BlockStoragePostDeployment
916 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
918 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
919 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
921 CephStorageNodesPostDeployment:
922 type: OS::TripleO::CephStoragePostDeployment
923 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
925 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
926 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
930 description: URL for the Overcloud Keystone service
931 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
933 description: Keystone Admin VIP endpoint
934 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
936 description: Controller VIP for public API endpoints
937 value: {get_attr: [VipMap, net_ip_map, external]}
939 description: VIP for Aodh API internal endpoint
940 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
941 CeilometerInternalVip:
942 description: VIP for Ceilometer API internal endpoint
943 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
945 description: VIP for Cinder API internal endpoint
946 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
948 description: VIP for Glance API internal endpoint
949 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
951 description: VIP for Gnocchi API internal endpoint
952 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
954 description: VIP for Heat API internal endpoint
955 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
957 description: VIP for Ironic API internal endpoint
958 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
960 description: VIP for Keystone API internal endpoint
961 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
963 description: VIP for Manila API internal endpoint
964 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
966 description: VIP for Neutron API internal endpoint
967 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
969 description: VIP for Nova API internal endpoint
970 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
971 OpenDaylightInternalVip:
972 description: VIP for OpenDaylight API internal endpoint
973 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
975 description: VIP for Sahara API internal endpoint
976 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
978 description: VIP for Swift Proxy internal endpoint
979 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
982 Mapping of the resources with the needed info for their endpoints.
983 This includes the protocol used, the IP, port and also a full
984 representation of the URI.
985 value: {get_attr: [EndpointMap, endpoint_map]}
988 The content that should be appended to your /etc/hosts if you want to get
989 hostname-based access to the deployed nodes (useful for testing without
991 value: {get_attr: [allNodesConfig, hosts_entries]}
993 description: The services enabled on each role
995 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
996 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
997 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
998 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
999 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}