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 description: A list of service resources (configured in the Heat
177 resource_registry) which represent nested stacks
178 for each service that should get installed on the Controllers.
179 type: comma_delimited_list
183 - OS::TripleO::Services::CephClient
184 - OS::TripleO::Services::CephExternal
185 - OS::TripleO::Services::Timezone
186 - OS::TripleO::Services::Ntp
187 - OS::TripleO::Services::Snmp
188 - OS::TripleO::Services::NovaCompute
189 - OS::TripleO::Services::NovaLibvirt
190 - OS::TripleO::Services::Kernel
191 - OS::TripleO::Services::ComputeNeutronCorePlugin
192 - OS::TripleO::Services::ComputeNeutronOvsAgent
193 - OS::TripleO::Services::ComputeCeilometerAgent
194 - OS::TripleO::Services::ComputeNeutronL3Agent
195 - OS::TripleO::Services::ComputeNeutronMetadataAgent
196 - OS::TripleO::Services::TripleoPackages
197 - OS::TripleO::Services::TripleoFirewall
198 - OS::TripleO::Services::NeutronSriovAgent
199 description: A list of service resources (configured in the Heat
200 resource_registry) which represent nested stacks
201 for each service that should get installed on the Compute Nodes.
202 type: comma_delimited_list
204 # Block storage specific parameters
208 BlockStorageExtraConfig:
211 BlockStorage specific configuration to inject into the cluster. Same
212 structure as ExtraConfig.
214 BlockStorageServices:
216 - OS::TripleO::Services::CinderVolume
217 - OS::TripleO::Services::Kernel
218 - OS::TripleO::Services::Ntp
219 - OS::TripleO::Services::Timezone
220 - OS::TripleO::Services::Snmp
221 - OS::TripleO::Services::TripleoPackages
222 - OS::TripleO::Services::TripleoFirewall
223 description: A list of service resources (configured in the Heat
224 resource_registry) which represent nested stacks
225 for each service that should get installed on the BlockStorage nodes.
226 type: comma_delimited_list
228 # Object storage specific parameters
232 ObjectStorageExtraConfig:
235 ObjectStorage specific configuration to inject into the cluster. Same
236 structure as ExtraConfig.
238 ObjectStorageServices:
240 - OS::TripleO::Services::Kernel
241 - OS::TripleO::Services::Ntp
242 - OS::TripleO::Services::SwiftStorage
243 - OS::TripleO::Services::SwiftRingBuilder
244 - OS::TripleO::Services::Snmp
245 - OS::TripleO::Services::Timezone
246 - OS::TripleO::Services::TripleoPackages
247 - OS::TripleO::Services::TripleoFirewall
248 description: A list of service resources (configured in the Heat
249 resource_registry) which represent nested stacks
250 for each service that should get installed on the ObjectStorage nodes.
251 Note this role currently only supports steps 2, 3 and 4 configuration.
252 type: comma_delimited_list
255 # Ceph storage specific parameters
259 CephStorageExtraConfig:
262 CephStorage specific configuration to inject into the cluster. Same
263 structure as ExtraConfig.
267 - OS::TripleO::Services::CephOSD
268 - OS::TripleO::Services::Kernel
269 - OS::TripleO::Services::Ntp
270 - OS::TripleO::Services::Timezone
271 - OS::TripleO::Services::TripleoPackages
272 - OS::TripleO::Services::TripleoFirewall
273 description: A list of service resources (configured in the Heat
274 resource_registry) which represent nested stacks
275 for each service that should get installed on the CephStorage nodes.
276 type: comma_delimited_list
278 # Hostname format for each role
279 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
280 # and %stackname% is replaced with OS::stack_name in the template below.
281 # If you want to use the heat generated names, pass '' (empty string).
282 ControllerHostnameFormat:
284 description: Format for Controller node hostnames
285 default: '%stackname%-controller-%index%'
286 ComputeHostnameFormat:
288 description: Format for Compute node hostnames
289 default: '%stackname%-novacompute-%index%'
290 BlockStorageHostnameFormat:
292 description: Format for BlockStorage node hostnames
293 default: '%stackname%-blockstorage-%index%'
294 ObjectStorageHostnameFormat:
296 description: Format for SwiftStorage node hostnames
297 default: '%stackname%-objectstorage-%index%'
298 CephStorageHostnameFormat:
300 description: Format for CephStorage node hostnames
301 default: '%stackname%-cephstorage-%index%'
303 # Identifiers to trigger tasks on nodes
308 Setting to a previously unused value during stack-update will trigger
309 package update on all nodes
314 Setting this to a unique value will re-run any deployment tasks which
315 perform configuration on a Heat stack-update.
317 # If you want to remove a specific node from a resource group, you can pass
318 # the node name or id as a <Group>RemovalPolicies parameter, for example:
319 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
320 ControllerRemovalPolicies:
324 List of resources to be removed from ControllerResourceGroup when
325 doing an update which requires removal of specific resources.
326 ComputeRemovalPolicies:
330 List of resources to be removed from ComputeResourceGroup when
331 doing an update which requires removal of specific resources.
332 BlockStorageRemovalPolicies:
336 List of resources to be removed from BlockStorageResourceGroup when
337 doing an update which requires removal of specific resources.
338 ObjectStorageRemovalPolicies:
342 List of resources to be removed from ObjectStorageResourceGroup when
343 doing an update which requires removal of specific resources.
344 CephStorageRemovalPolicies:
348 List of resources to be removed from CephStorageResourceGroup when
349 doing an update which requires removal of specific resources.
353 description: Do not use deprecated params, they will be removed.
355 - controllerExtraConfig
360 HeatAuthEncryptionKey:
361 type: OS::Heat::RandomString
364 type: OS::Heat::RandomString
369 type: OS::Heat::RandomString
374 type: OS::TripleO::ServiceNetMap
377 type: OS::TripleO::EndpointMap
379 CloudName: {get_param: CloudName}
380 NetIpMap: {get_attr: [VipMap, net_ip_map]}
381 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
383 ControllerServiceChain:
384 type: OS::TripleO::Services
386 Services: {get_param: ControllerServices}
387 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
388 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
389 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
392 type: OS::Heat::ResourceGroup
395 count: {get_param: ControllerCount}
396 removal_policies: {get_param: ControllerRemovalPolicies}
398 type: OS::TripleO::Controller
400 CloudDomain: {get_param: CloudDomain}
401 controllerExtraConfig: {get_param: controllerExtraConfig}
402 HorizonSecret: {get_resource: HorizonSecret}
403 PcsdPassword: {get_resource: PcsdPassword}
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]}
410 template: {get_param: ControllerHostnameFormat}
412 '%stackname%': {get_param: 'OS::stack_name'}
414 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
415 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
418 type: OS::TripleO::Services
420 Services: {get_param: ComputeServices}
421 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
422 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
423 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
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 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
438 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
441 template: {get_param: ComputeHostnameFormat}
443 '%stackname%': {get_param: 'OS::stack_name'}
445 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
446 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
448 BlockStorageServiceChain:
449 type: OS::TripleO::Services
451 Services: {get_param: BlockStorageServices}
452 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
453 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
454 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
457 type: OS::Heat::ResourceGroup
460 count: {get_param: BlockStorageCount}
461 removal_policies: {get_param: BlockStorageRemovalPolicies}
463 type: OS::TripleO::BlockStorage
465 UpdateIdentifier: {get_param: UpdateIdentifier}
468 template: {get_param: BlockStorageHostnameFormat}
470 '%stackname%': {get_param: 'OS::stack_name'}
471 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
472 ExtraConfig: {get_param: ExtraConfig}
473 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
474 CloudDomain: {get_param: CloudDomain}
475 ServerMetadata: {get_param: ServerMetadata}
477 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
478 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
480 ObjectStorageServiceChain:
481 type: OS::TripleO::Services
483 Services: {get_param: ObjectStorageServices}
484 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
485 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
486 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
489 type: OS::Heat::ResourceGroup
492 count: {get_param: ObjectStorageCount}
493 removal_policies: {get_param: ObjectStorageRemovalPolicies}
495 type: OS::TripleO::ObjectStorage
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 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
517 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
518 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
521 type: OS::Heat::ResourceGroup
524 count: {get_param: CephStorageCount}
525 removal_policies: {get_param: CephStorageRemovalPolicies}
527 type: OS::TripleO::CephStorage
529 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
530 UpdateIdentifier: {get_param: UpdateIdentifier}
533 template: {get_param: CephStorageHostnameFormat}
535 '%stackname%': {get_param: 'OS::stack_name'}
536 ExtraConfig: {get_param: ExtraConfig}
537 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
538 CloudDomain: {get_param: CloudDomain}
539 ServerMetadata: {get_param: ServerMetadata}
541 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
542 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
545 type: OS::TripleO::Network::Ports::NetIpListMap
547 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
548 ExternalIpList: {get_attr: [Controller, external_ip_address]}
549 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
550 StorageIpList: {get_attr: [Controller, storage_ip_address]}
551 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
552 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
553 ManagementIpList: {get_attr: [Controller, management_ip_address]}
556 type: OS::TripleO::AllNodes::SoftwareConfig
561 - {get_attr: [Compute, hosts_entry]}
564 - {get_attr: [Controller, hosts_entry]}
567 - {get_attr: [BlockStorage, hosts_entry]}
570 - {get_attr: [ObjectStorage, hosts_entry]}
573 - {get_attr: [CephStorage, hosts_entry]}
574 controller_ips: {get_attr: [Controller, ip_address]}
575 controller_names: {get_attr: [Controller, hostname]}
576 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
577 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
578 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
579 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
580 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
581 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
582 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
583 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
584 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
585 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
586 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
587 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
588 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
589 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
590 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
591 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
592 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
593 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
594 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
595 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
596 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
597 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
598 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
599 ceph_mon_node_names: {get_attr: [Controller, hostname]}
600 DeployIdentifier: {get_param: DeployIdentifier}
601 UpdateIdentifier: {get_param: UpdateIdentifier}
604 type: OS::Heat::RandomString
609 type: OS::Heat::RandomString
612 salt: {get_param: RabbitCookieSalt}
615 type: OS::TripleO::DefaultPasswords
617 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
618 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
619 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
620 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
621 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
623 # creates the network architecture
625 type: OS::TripleO::Network
628 type: OS::Neutron::Port
631 name: control_virtual_ip
632 network: {get_param: NeutronControlPlaneID}
633 fixed_ips: {get_param: ControlFixedIPs}
634 replacement_policy: AUTO
638 type: OS::TripleO::Network::Ports::RedisVipPort
640 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
641 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
642 PortName: redis_virtual_ip
643 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
645 FixedIPs: {get_param: RedisVirtualFixedIPs}
647 # The public VIP is on the External net, falls back to ctlplane
650 type: OS::TripleO::Network::Ports::ExternalVipPort
652 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
653 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
654 PortName: public_virtual_ip
655 FixedIPs: {get_param: PublicVirtualFixedIPs}
657 InternalApiVirtualIP:
659 type: OS::TripleO::Network::Ports::InternalApiVipPort
661 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
662 PortName: internal_api_virtual_ip
663 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
667 type: OS::TripleO::Network::Ports::StorageVipPort
669 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
670 PortName: storage_virtual_ip
671 FixedIPs: {get_param: StorageVirtualFixedIPs}
673 StorageMgmtVirtualIP:
675 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
677 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
678 PortName: storage_management_virtual_ip
679 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
682 type: OS::TripleO::Network::Ports::NetVipMap
684 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
685 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
686 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
687 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
688 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
689 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
690 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
691 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
692 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
693 # No tenant or management VIP required
696 type: OS::TripleO::VipConfig
699 type: OS::Heat::StructuredDeployments
702 config: {get_resource: VipConfig}
703 servers: {get_attr: [Controller, attributes, nova_server_resource]}
705 # service VIP mappings
706 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
707 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
708 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
709 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
710 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
711 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
712 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
713 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
714 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
715 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
716 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
717 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
718 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
719 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
720 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
721 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
722 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
723 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
724 # direct configuration of Virtual IPs for each network
725 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
726 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
727 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
728 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
729 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
730 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
731 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
733 ControllerSwiftDeployment:
734 type: OS::Heat::StructuredDeployments
736 name: ControllerSwiftDeployment
737 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
738 servers: {get_attr: [Controller, attributes, nova_server_resource]}
740 ObjectStorageSwiftDeployment:
741 type: OS::Heat::StructuredDeployments
743 name: ObjectStorageSwiftDeployment
744 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
745 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
747 SwiftDevicesAndProxyConfig:
748 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
750 controller_swift_devices: {get_attr: [Controller, swift_device]}
751 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
752 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
754 ControllerAllNodesDeployment:
755 type: OS::Heat::StructuredDeployments
757 name: ControllerAllNodesDeployment
758 config: {get_attr: [allNodesConfig, config_id]}
759 servers: {get_attr: [Controller, attributes, nova_server_resource]}
761 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
762 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
764 ComputeAllNodesDeployment:
765 type: OS::Heat::StructuredDeployments
767 name: ComputeAllNodesDeployment
768 config: {get_attr: [allNodesConfig, config_id]}
769 servers: {get_attr: [Compute, attributes, nova_server_resource]}
771 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
772 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
774 BlockStorageAllNodesDeployment:
775 type: OS::Heat::StructuredDeployments
777 name: BlockStorageAllNodesDeployment
778 config: {get_attr: [allNodesConfig, config_id]}
779 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
781 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
782 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
784 ObjectStorageAllNodesDeployment:
785 type: OS::Heat::StructuredDeployments
787 name: ObjectStorageAllNodesDeployment
788 config: {get_attr: [allNodesConfig, config_id]}
789 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
791 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
792 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
794 CephStorageAllNodesDeployment:
795 type: OS::Heat::StructuredDeployments
797 name: CephStorageAllNodesDeployment
798 config: {get_attr: [allNodesConfig, config_id]}
799 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
801 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
802 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
804 # All Nodes Validations
805 AllNodesValidationConfig:
806 type: OS::TripleO::AllNodes::Validation
811 - - {get_attr: [Controller, resource.0.external_ip_address]}
812 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
813 - {get_attr: [Controller, resource.0.storage_ip_address]}
814 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
815 - {get_attr: [Controller, resource.0.tenant_ip_address]}
816 - {get_attr: [Controller, resource.0.management_ip_address]}
818 ControllerAllNodesValidationDeployment:
819 type: OS::Heat::StructuredDeployments
820 depends_on: ControllerAllNodesDeployment
822 name: ControllerAllNodesValidationDeployment
823 config: {get_resource: AllNodesValidationConfig}
824 servers: {get_attr: [Controller, attributes, nova_server_resource]}
826 ComputeAllNodesValidationDeployment:
827 type: OS::Heat::StructuredDeployments
828 depends_on: ComputeAllNodesDeployment
830 name: ComputeAllNodesValidationDeployment
831 config: {get_resource: AllNodesValidationConfig}
832 servers: {get_attr: [Compute, attributes, nova_server_resource]}
834 BlockStorageAllNodesValidationDeployment:
835 type: OS::Heat::StructuredDeployments
836 depends_on: BlockStorageAllNodesDeployment
838 name: BlockStorageAllNodesValidationDeployment
839 config: {get_resource: AllNodesValidationConfig}
840 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
842 ObjectStorageAllNodesValidationDeployment:
843 type: OS::Heat::StructuredDeployments
844 depends_on: ObjectStorageAllNodesDeployment
846 name: ObjectStorageAllNodesValidationDeployment
847 config: {get_resource: AllNodesValidationConfig}
848 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
850 CephStorageAllNodesValidationDeployment:
851 type: OS::Heat::StructuredDeployments
852 depends_on: CephStorageAllNodesDeployment
854 name: CephStorageAllNodesValidationDeployment
855 config: {get_resource: AllNodesValidationConfig}
856 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
859 type: OS::TripleO::Tasks::UpdateWorkflow
861 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
862 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
863 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
864 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
865 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
867 deploy_identifier: {get_param: DeployIdentifier}
868 update_identifier: {get_param: UpdateIdentifier}
870 # Optional ExtraConfig for all nodes - all roles are passed in here, but
871 # the nested template may configure each role differently (or not at all)
873 type: OS::TripleO::AllNodesExtraConfig
876 - ComputeAllNodesValidationDeployment
877 - BlockStorageAllNodesValidationDeployment
878 - ObjectStorageAllNodesValidationDeployment
879 - CephStorageAllNodesValidationDeployment
880 - ControllerAllNodesValidationDeployment
882 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
883 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
884 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
885 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
886 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
888 # Nested stack deployment runs after all other controller deployments
889 ControllerNodesPostDeployment:
890 type: OS::TripleO::ControllerPostDeployment
891 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
893 servers: {get_attr: [Controller, attributes, nova_server_resource]}
894 RoleData: {get_attr: [ControllerServiceChain, role_data]}
896 ComputeNodesPostDeployment:
897 type: OS::TripleO::ComputePostDeployment
898 depends_on: [ComputeAllNodesDeployment]
900 servers: {get_attr: [Compute, attributes, nova_server_resource]}
901 RoleData: {get_attr: [ComputeServiceChain, role_data]}
903 ObjectStorageNodesPostDeployment:
904 type: OS::TripleO::ObjectStoragePostDeployment
905 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
907 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
908 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
910 BlockStorageNodesPostDeployment:
911 type: OS::TripleO::BlockStoragePostDeployment
912 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
914 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
915 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
917 CephStorageNodesPostDeployment:
918 type: OS::TripleO::CephStoragePostDeployment
919 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
921 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
922 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
926 description: URL for the Overcloud Keystone service
927 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
929 description: Keystone Admin VIP endpoint
930 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
932 description: Controller VIP for public API endpoints
933 value: {get_attr: [VipMap, net_ip_map, external]}
935 description: VIP for Aodh API internal endpoint
936 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
937 CeilometerInternalVip:
938 description: VIP for Ceilometer API internal endpoint
939 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
941 description: VIP for Cinder API internal endpoint
942 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
944 description: VIP for Glance API internal endpoint
945 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
947 description: VIP for Gnocchi API internal endpoint
948 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
950 description: VIP for Heat API internal endpoint
951 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
953 description: VIP for Ironic API internal endpoint
954 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
956 description: VIP for Keystone API internal endpoint
957 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
959 description: VIP for Manila API internal endpoint
960 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
962 description: VIP for Neutron API internal endpoint
963 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
965 description: VIP for Nova API internal endpoint
966 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
968 description: VIP for Sahara API internal endpoint
969 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
971 description: VIP for Swift Proxy internal endpoint
972 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
975 Mapping of the resources with the needed info for their endpoints.
976 This includes the protocol used, the IP, port and also a full
977 representation of the URI.
978 value: {get_attr: [EndpointMap, endpoint_map]}
981 The content that should be appended to your /etc/hosts if you want to get
982 hostname-based access to the deployed nodes (useful for testing without
984 value: {get_attr: [allNodesConfig, hosts_entries]}
986 description: The services enabled on each role
988 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
989 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
990 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
991 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
992 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}