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 description: A random string to be used as a salt when hashing to determine mappings in the ring.
100 # Compute-specific params
104 HypervisorNeutronPhysicalBridge:
107 An OVS bridge to create on each hypervisor. This defaults to br-ex the
108 same as the control plane nodes, as we have a uniform configuration of
109 the openvswitch agent. Typically should not need to be changed.
111 HypervisorNeutronPublicInterface:
113 description: What interface to add to the HypervisorNeutronPhysicalBridge.
118 - OS::TripleO::Services::CephMon
119 - OS::TripleO::Services::CephExternal
120 - OS::TripleO::Services::CinderApi
121 - OS::TripleO::Services::CinderBackup
122 - OS::TripleO::Services::CinderScheduler
123 - OS::TripleO::Services::CinderVolume
124 - OS::TripleO::Services::Core
125 - OS::TripleO::Services::Kernel
126 - OS::TripleO::Services::Keystone
127 - OS::TripleO::Services::GlanceApi
128 - OS::TripleO::Services::GlanceRegistry
129 - OS::TripleO::Services::HeatApi
130 - OS::TripleO::Services::HeatApiCfn
131 - OS::TripleO::Services::HeatApiCloudwatch
132 - OS::TripleO::Services::HeatEngine
133 - OS::TripleO::Services::MySQL
134 - OS::TripleO::Services::NeutronDhcpAgent
135 - OS::TripleO::Services::NeutronL3Agent
136 - OS::TripleO::Services::NeutronMetadataAgent
137 - OS::TripleO::Services::NeutronApi
138 - OS::TripleO::Services::NeutronCorePlugin
139 - OS::TripleO::Services::NeutronOvsAgent
140 - OS::TripleO::Services::RabbitMQ
141 - OS::TripleO::Services::HAproxy
142 - OS::TripleO::Services::Keepalived
143 - OS::TripleO::Services::Memcached
144 - OS::TripleO::Services::Pacemaker
145 - OS::TripleO::Services::Redis
146 - OS::TripleO::Services::NovaConductor
147 - OS::TripleO::Services::MongoDb
148 - OS::TripleO::Services::NovaApi
149 - OS::TripleO::Services::NovaScheduler
150 - OS::TripleO::Services::NovaConsoleauth
151 - OS::TripleO::Services::NovaVncproxy
152 - OS::TripleO::Services::Ntp
153 - OS::TripleO::Services::SwiftProxy
154 - OS::TripleO::Services::SwiftStorage
155 - OS::TripleO::Services::SwiftRingBuilder
156 - OS::TripleO::Services::Snmp
157 - OS::TripleO::Services::Timezone
158 - OS::TripleO::Services::CeilometerApi
159 - OS::TripleO::Services::CeilometerCollector
160 - OS::TripleO::Services::CeilometerExpirer
161 - OS::TripleO::Services::CeilometerAgentCentral
162 - OS::TripleO::Services::CeilometerAgentNotification
163 - OS::TripleO::Services::Horizon
164 - OS::TripleO::Services::GnocchiApi
165 - OS::TripleO::Services::GnocchiMetricd
166 - OS::TripleO::Services::GnocchiStatsd
167 - OS::Tripleo::Services::ManilaApi
168 - OS::Tripleo::Services::ManilaScheduler
169 - OS::Tripleo::Services::ManilaShare
170 - OS::TripleO::Services::AodhApi
171 - OS::TripleO::Services::AodhEvaluator
172 - OS::TripleO::Services::AodhNotifier
173 - OS::TripleO::Services::AodhListener
174 - OS::TripleO::Services::SaharaApi
175 - OS::TripleO::Services::SaharaEngine
176 - OS::TripleO::Services::IronicApi
177 - OS::TripleO::Services::IronicConductor
178 - OS::TripleO::Services::NovaIronic
179 - OS::TripleO::Services::TripleoPackages
180 - OS::TripleO::Services::TripleoFirewall
181 description: A list of service resources (configured in the Heat
182 resource_registry) which represent nested stacks
183 for each service that should get installed on the Controllers.
184 type: comma_delimited_list
188 - OS::TripleO::Services::CephClient
189 - OS::TripleO::Services::CephExternal
190 - OS::TripleO::Services::Timezone
191 - OS::TripleO::Services::Ntp
192 - OS::TripleO::Services::Snmp
193 - OS::TripleO::Services::NovaCompute
194 - OS::TripleO::Services::NovaLibvirt
195 - OS::TripleO::Services::Kernel
196 - OS::TripleO::Services::ComputeNeutronCorePlugin
197 - OS::TripleO::Services::ComputeNeutronOvsAgent
198 - OS::TripleO::Services::ComputeCeilometerAgent
199 - OS::TripleO::Services::ComputeNeutronL3Agent
200 - OS::TripleO::Services::ComputeNeutronMetadataAgent
201 - OS::TripleO::Services::TripleoPackages
202 - OS::TripleO::Services::TripleoFirewall
203 description: A list of service resources (configured in the Heat
204 resource_registry) which represent nested stacks
205 for each service that should get installed on the Compute Nodes.
206 type: comma_delimited_list
208 # Block storage specific parameters
212 BlockStorageExtraConfig:
215 BlockStorage specific configuration to inject into the cluster. Same
216 structure as ExtraConfig.
218 BlockStorageServices:
220 - OS::TripleO::Services::CinderVolume
221 - OS::TripleO::Services::Kernel
222 - OS::TripleO::Services::Ntp
223 - OS::TripleO::Services::Timezone
224 - OS::TripleO::Services::Snmp
225 - OS::TripleO::Services::TripleoPackages
226 - OS::TripleO::Services::TripleoFirewall
227 description: A list of service resources (configured in the Heat
228 resource_registry) which represent nested stacks
229 for each service that should get installed on the BlockStorage nodes.
230 type: comma_delimited_list
232 # Object storage specific parameters
236 ObjectStorageExtraConfig:
239 ObjectStorage specific configuration to inject into the cluster. Same
240 structure as ExtraConfig.
242 ObjectStorageServices:
244 - OS::TripleO::Services::Kernel
245 - OS::TripleO::Services::Ntp
246 - OS::TripleO::Services::SwiftStorage
247 - OS::TripleO::Services::SwiftRingBuilder
248 - OS::TripleO::Services::Snmp
249 - OS::TripleO::Services::Timezone
250 - OS::TripleO::Services::TripleoPackages
251 - OS::TripleO::Services::TripleoFirewall
252 description: A list of service resources (configured in the Heat
253 resource_registry) which represent nested stacks
254 for each service that should get installed on the ObjectStorage nodes.
255 Note this role currently only supports steps 2, 3 and 4 configuration.
256 type: comma_delimited_list
259 # Ceph storage specific parameters
263 CephStorageExtraConfig:
266 CephStorage specific configuration to inject into the cluster. Same
267 structure as ExtraConfig.
271 - OS::TripleO::Services::CephOSD
272 - OS::TripleO::Services::Kernel
273 - OS::TripleO::Services::Ntp
274 - OS::TripleO::Services::Timezone
275 - OS::TripleO::Services::TripleoPackages
276 - OS::TripleO::Services::TripleoFirewall
277 description: A list of service resources (configured in the Heat
278 resource_registry) which represent nested stacks
279 for each service that should get installed on the CephStorage nodes.
280 type: comma_delimited_list
282 # Hostname format for each role
283 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
284 # and %stackname% is replaced with OS::stack_name in the template below.
285 # If you want to use the heat generated names, pass '' (empty string).
286 ControllerHostnameFormat:
288 description: Format for Controller node hostnames
289 default: '%stackname%-controller-%index%'
290 ComputeHostnameFormat:
292 description: Format for Compute node hostnames
293 default: '%stackname%-novacompute-%index%'
294 BlockStorageHostnameFormat:
296 description: Format for BlockStorage node hostnames
297 default: '%stackname%-blockstorage-%index%'
298 ObjectStorageHostnameFormat:
300 description: Format for SwiftStorage node hostnames
301 default: '%stackname%-objectstorage-%index%'
302 CephStorageHostnameFormat:
304 description: Format for CephStorage node hostnames
305 default: '%stackname%-cephstorage-%index%'
307 # Identifiers to trigger tasks on nodes
312 Setting to a previously unused value during stack-update will trigger
313 package update on all nodes
318 Setting this to a unique value will re-run any deployment tasks which
319 perform configuration on a Heat stack-update.
321 # If you want to remove a specific node from a resource group, you can pass
322 # the node name or id as a <Group>RemovalPolicies parameter, for example:
323 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
324 ControllerRemovalPolicies:
328 List of resources to be removed from ControllerResourceGroup when
329 doing an update which requires removal of specific resources.
330 ComputeRemovalPolicies:
334 List of resources to be removed from ComputeResourceGroup when
335 doing an update which requires removal of specific resources.
336 BlockStorageRemovalPolicies:
340 List of resources to be removed from BlockStorageResourceGroup when
341 doing an update which requires removal of specific resources.
342 ObjectStorageRemovalPolicies:
346 List of resources to be removed from ObjectStorageResourceGroup when
347 doing an update which requires removal of specific resources.
348 CephStorageRemovalPolicies:
352 List of resources to be removed from CephStorageResourceGroup when
353 doing an update which requires removal of specific resources.
357 description: Do not use deprecated params, they will be removed.
359 - controllerExtraConfig
364 HeatAuthEncryptionKey:
365 type: OS::Heat::RandomString
368 type: OS::Heat::RandomString
373 type: OS::Heat::RandomString
378 type: OS::TripleO::ServiceNetMap
381 type: OS::TripleO::EndpointMap
383 CloudName: {get_param: CloudName}
384 NetIpMap: {get_attr: [VipMap, net_ip_map]}
385 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
387 ControllerServiceChain:
388 type: OS::TripleO::Services
390 Services: {get_param: ControllerServices}
391 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
392 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
393 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
396 type: OS::Heat::ResourceGroup
399 count: {get_param: ControllerCount}
400 removal_policies: {get_param: ControllerRemovalPolicies}
402 type: OS::TripleO::Controller
404 CloudDomain: {get_param: CloudDomain}
405 controllerExtraConfig: {get_param: controllerExtraConfig}
406 HorizonSecret: {get_resource: HorizonSecret}
407 PcsdPassword: {get_resource: PcsdPassword}
408 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
409 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
410 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
411 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
414 template: {get_param: ControllerHostnameFormat}
416 '%stackname%': {get_param: 'OS::stack_name'}
418 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
419 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
422 type: OS::TripleO::Services
424 Services: {get_param: ComputeServices}
425 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
426 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
427 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
430 type: OS::Heat::ResourceGroup
433 count: {get_param: ComputeCount}
434 removal_policies: {get_param: ComputeRemovalPolicies}
436 type: OS::TripleO::Compute
438 CloudDomain: {get_param: CloudDomain}
439 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
440 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
441 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
442 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
445 template: {get_param: ComputeHostnameFormat}
447 '%stackname%': {get_param: 'OS::stack_name'}
449 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
450 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
452 BlockStorageServiceChain:
453 type: OS::TripleO::Services
455 Services: {get_param: BlockStorageServices}
456 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
457 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
458 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
461 type: OS::Heat::ResourceGroup
464 count: {get_param: BlockStorageCount}
465 removal_policies: {get_param: BlockStorageRemovalPolicies}
467 type: OS::TripleO::BlockStorage
469 UpdateIdentifier: {get_param: UpdateIdentifier}
472 template: {get_param: BlockStorageHostnameFormat}
474 '%stackname%': {get_param: 'OS::stack_name'}
475 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
476 ExtraConfig: {get_param: ExtraConfig}
477 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
478 CloudDomain: {get_param: CloudDomain}
479 ServerMetadata: {get_param: ServerMetadata}
481 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
482 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
484 ObjectStorageServiceChain:
485 type: OS::TripleO::Services
487 Services: {get_param: ObjectStorageServices}
488 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
489 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
490 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
493 type: OS::Heat::ResourceGroup
496 count: {get_param: ObjectStorageCount}
497 removal_policies: {get_param: ObjectStorageRemovalPolicies}
499 type: OS::TripleO::ObjectStorage
501 HashSuffix: {get_param: SwiftHashSuffix}
502 UpdateIdentifier: {get_param: UpdateIdentifier}
503 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
506 template: {get_param: ObjectStorageHostnameFormat}
508 '%stackname%': {get_param: 'OS::stack_name'}
509 ExtraConfig: {get_param: ExtraConfig}
510 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
511 CloudDomain: {get_param: CloudDomain}
512 ServerMetadata: {get_param: ServerMetadata}
514 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
515 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
517 CephStorageServiceChain:
518 type: OS::TripleO::Services
520 Services: {get_param: CephStorageServices}
521 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
522 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
523 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
526 type: OS::Heat::ResourceGroup
529 count: {get_param: CephStorageCount}
530 removal_policies: {get_param: CephStorageRemovalPolicies}
532 type: OS::TripleO::CephStorage
534 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
535 UpdateIdentifier: {get_param: UpdateIdentifier}
538 template: {get_param: CephStorageHostnameFormat}
540 '%stackname%': {get_param: 'OS::stack_name'}
541 ExtraConfig: {get_param: ExtraConfig}
542 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
543 CloudDomain: {get_param: CloudDomain}
544 ServerMetadata: {get_param: ServerMetadata}
546 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
547 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
550 type: OS::TripleO::Network::Ports::NetIpListMap
552 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
553 ExternalIpList: {get_attr: [Controller, external_ip_address]}
554 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
555 StorageIpList: {get_attr: [Controller, storage_ip_address]}
556 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
557 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
558 ManagementIpList: {get_attr: [Controller, management_ip_address]}
561 type: OS::TripleO::AllNodes::SoftwareConfig
566 - {get_attr: [Compute, hosts_entry]}
569 - {get_attr: [Controller, hosts_entry]}
572 - {get_attr: [BlockStorage, hosts_entry]}
575 - {get_attr: [ObjectStorage, hosts_entry]}
578 - {get_attr: [CephStorage, hosts_entry]}
579 controller_ips: {get_attr: [Controller, ip_address]}
580 controller_names: {get_attr: [Controller, hostname]}
581 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
582 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
583 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
584 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
585 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
586 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
587 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
588 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
589 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
590 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
591 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
592 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
593 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
594 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
595 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
596 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
597 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
598 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
599 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
600 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
601 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
602 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
603 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
604 ceph_mon_node_names: {get_attr: [Controller, hostname]}
605 DeployIdentifier: {get_param: DeployIdentifier}
606 UpdateIdentifier: {get_param: UpdateIdentifier}
609 type: OS::Heat::RandomString
614 type: OS::Heat::RandomString
617 salt: {get_param: RabbitCookieSalt}
620 type: OS::TripleO::DefaultPasswords
622 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
623 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
624 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
625 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
626 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
628 # creates the network architecture
630 type: OS::TripleO::Network
633 type: OS::Neutron::Port
636 name: control_virtual_ip
637 network: {get_param: NeutronControlPlaneID}
638 fixed_ips: {get_param: ControlFixedIPs}
639 replacement_policy: AUTO
643 type: OS::TripleO::Network::Ports::RedisVipPort
645 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
646 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
647 PortName: redis_virtual_ip
648 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
650 FixedIPs: {get_param: RedisVirtualFixedIPs}
652 # The public VIP is on the External net, falls back to ctlplane
655 type: OS::TripleO::Network::Ports::ExternalVipPort
657 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
658 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
659 PortName: public_virtual_ip
660 FixedIPs: {get_param: PublicVirtualFixedIPs}
662 InternalApiVirtualIP:
664 type: OS::TripleO::Network::Ports::InternalApiVipPort
666 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
667 PortName: internal_api_virtual_ip
668 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
672 type: OS::TripleO::Network::Ports::StorageVipPort
674 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
675 PortName: storage_virtual_ip
676 FixedIPs: {get_param: StorageVirtualFixedIPs}
678 StorageMgmtVirtualIP:
680 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
682 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
683 PortName: storage_management_virtual_ip
684 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
687 type: OS::TripleO::Network::Ports::NetVipMap
689 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
690 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
691 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
692 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
693 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
694 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
695 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
696 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
697 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
698 # No tenant or management VIP required
701 type: OS::TripleO::VipConfig
704 type: OS::Heat::StructuredDeployments
707 config: {get_resource: VipConfig}
708 servers: {get_attr: [Controller, attributes, nova_server_resource]}
710 # service VIP mappings
711 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
712 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
713 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
714 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
715 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
716 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
717 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
718 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
719 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
720 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
721 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
722 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
723 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
724 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
725 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
726 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
727 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
728 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
729 # direct configuration of Virtual IPs for each network
730 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
731 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
732 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
733 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
734 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
735 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
736 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
738 ControllerSwiftDeployment:
739 type: OS::Heat::StructuredDeployments
741 name: ControllerSwiftDeployment
742 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
743 servers: {get_attr: [Controller, attributes, nova_server_resource]}
745 ObjectStorageSwiftDeployment:
746 type: OS::Heat::StructuredDeployments
748 name: ObjectStorageSwiftDeployment
749 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
750 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
752 SwiftDevicesAndProxyConfig:
753 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
755 controller_swift_devices: {get_attr: [Controller, swift_device]}
756 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
757 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
759 ControllerAllNodesDeployment:
760 type: OS::Heat::StructuredDeployments
762 name: ControllerAllNodesDeployment
763 config: {get_attr: [allNodesConfig, config_id]}
764 servers: {get_attr: [Controller, attributes, nova_server_resource]}
766 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
767 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
769 ComputeAllNodesDeployment:
770 type: OS::Heat::StructuredDeployments
772 name: ComputeAllNodesDeployment
773 config: {get_attr: [allNodesConfig, config_id]}
774 servers: {get_attr: [Compute, attributes, nova_server_resource]}
776 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
777 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
779 BlockStorageAllNodesDeployment:
780 type: OS::Heat::StructuredDeployments
782 name: BlockStorageAllNodesDeployment
783 config: {get_attr: [allNodesConfig, config_id]}
784 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
786 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
787 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
789 ObjectStorageAllNodesDeployment:
790 type: OS::Heat::StructuredDeployments
792 name: ObjectStorageAllNodesDeployment
793 config: {get_attr: [allNodesConfig, config_id]}
794 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
796 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
797 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
799 CephStorageAllNodesDeployment:
800 type: OS::Heat::StructuredDeployments
802 name: CephStorageAllNodesDeployment
803 config: {get_attr: [allNodesConfig, config_id]}
804 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
806 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
807 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
809 # All Nodes Validations
810 AllNodesValidationConfig:
811 type: OS::TripleO::AllNodes::Validation
816 - - {get_attr: [Controller, resource.0.external_ip_address]}
817 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
818 - {get_attr: [Controller, resource.0.storage_ip_address]}
819 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
820 - {get_attr: [Controller, resource.0.tenant_ip_address]}
821 - {get_attr: [Controller, resource.0.management_ip_address]}
823 ControllerAllNodesValidationDeployment:
824 type: OS::Heat::StructuredDeployments
825 depends_on: ControllerAllNodesDeployment
827 name: ControllerAllNodesValidationDeployment
828 config: {get_resource: AllNodesValidationConfig}
829 servers: {get_attr: [Controller, attributes, nova_server_resource]}
831 ComputeAllNodesValidationDeployment:
832 type: OS::Heat::StructuredDeployments
833 depends_on: ComputeAllNodesDeployment
835 name: ComputeAllNodesValidationDeployment
836 config: {get_resource: AllNodesValidationConfig}
837 servers: {get_attr: [Compute, attributes, nova_server_resource]}
839 BlockStorageAllNodesValidationDeployment:
840 type: OS::Heat::StructuredDeployments
841 depends_on: BlockStorageAllNodesDeployment
843 name: BlockStorageAllNodesValidationDeployment
844 config: {get_resource: AllNodesValidationConfig}
845 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
847 ObjectStorageAllNodesValidationDeployment:
848 type: OS::Heat::StructuredDeployments
849 depends_on: ObjectStorageAllNodesDeployment
851 name: ObjectStorageAllNodesValidationDeployment
852 config: {get_resource: AllNodesValidationConfig}
853 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
855 CephStorageAllNodesValidationDeployment:
856 type: OS::Heat::StructuredDeployments
857 depends_on: CephStorageAllNodesDeployment
859 name: CephStorageAllNodesValidationDeployment
860 config: {get_resource: AllNodesValidationConfig}
861 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
864 type: OS::TripleO::Tasks::UpdateWorkflow
866 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
867 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
868 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
869 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
870 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
872 deploy_identifier: {get_param: DeployIdentifier}
873 update_identifier: {get_param: UpdateIdentifier}
875 # Optional ExtraConfig for all nodes - all roles are passed in here, but
876 # the nested template may configure each role differently (or not at all)
878 type: OS::TripleO::AllNodesExtraConfig
881 - ComputeAllNodesValidationDeployment
882 - BlockStorageAllNodesValidationDeployment
883 - ObjectStorageAllNodesValidationDeployment
884 - CephStorageAllNodesValidationDeployment
885 - ControllerAllNodesValidationDeployment
887 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
888 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
889 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
890 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
891 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
893 # Nested stack deployment runs after all other controller deployments
894 ControllerNodesPostDeployment:
895 type: OS::TripleO::ControllerPostDeployment
896 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
898 servers: {get_attr: [Controller, attributes, nova_server_resource]}
899 RoleData: {get_attr: [ControllerServiceChain, role_data]}
901 ComputeNodesPostDeployment:
902 type: OS::TripleO::ComputePostDeployment
903 depends_on: [ComputeAllNodesDeployment]
905 servers: {get_attr: [Compute, attributes, nova_server_resource]}
906 RoleData: {get_attr: [ComputeServiceChain, role_data]}
908 ObjectStorageNodesPostDeployment:
909 type: OS::TripleO::ObjectStoragePostDeployment
910 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
912 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
913 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
915 BlockStorageNodesPostDeployment:
916 type: OS::TripleO::BlockStoragePostDeployment
917 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
919 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
920 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
922 CephStorageNodesPostDeployment:
923 type: OS::TripleO::CephStoragePostDeployment
924 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
926 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
927 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
931 description: URL for the Overcloud Keystone service
932 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
934 description: Keystone Admin VIP endpoint
935 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
937 description: Controller VIP for public API endpoints
938 value: {get_attr: [VipMap, net_ip_map, external]}
940 description: VIP for Aodh API internal endpoint
941 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
942 CeilometerInternalVip:
943 description: VIP for Ceilometer API internal endpoint
944 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
946 description: VIP for Cinder API internal endpoint
947 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
949 description: VIP for Glance API internal endpoint
950 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
952 description: VIP for Gnocchi API internal endpoint
953 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
955 description: VIP for Heat API internal endpoint
956 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
958 description: VIP for Ironic API internal endpoint
959 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
961 description: VIP for Keystone API internal endpoint
962 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
964 description: VIP for Manila API internal endpoint
965 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
967 description: VIP for Neutron API internal endpoint
968 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
970 description: VIP for Nova API internal endpoint
971 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
973 description: VIP for Sahara API internal endpoint
974 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
976 description: VIP for Swift Proxy internal endpoint
977 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
980 Mapping of the resources with the needed info for their endpoints.
981 This includes the protocol used, the IP, port and also a full
982 representation of the URI.
983 value: {get_attr: [EndpointMap, endpoint_map]}
986 The content that should be appended to your /etc/hosts if you want to get
987 hostname-based access to the deployed nodes (useful for testing without
989 value: {get_attr: [allNodesConfig, hosts_entries]}
991 description: The services enabled on each role
993 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
994 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
995 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
996 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
997 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}