1 heat_template_version: 2016-04-08
4 Deploy an OpenStack environment, consisting of several node types (roles),
5 Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
6 roles enable independent scaling of the storage components, but the minimal
7 deployment is one Controller and one Compute node.
10 # TODO(shadower): we should probably use the parameter groups to put
14 # Common parameters (not specific to a role)
17 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
21 description: Should be used for arbitrary ips.
23 InternalApiVirtualFixedIPs:
26 Control the IP allocation for the InternalApiVirtualInterface port. E.g.
27 [{'ip_address':'1.2.3.4'}]
29 NeutronControlPlaneID:
32 description: Neutron ID or name for ctlplane network.
33 NeutronPublicInterface:
35 description: What interface to bridge onto br-ex for network nodes.
37 PublicVirtualFixedIPs:
40 Control the IP allocation for the PublicVirtualInterface port. E.g.
41 [{'ip_address':'1.2.3.4'}]
46 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
47 StorageVirtualFixedIPs:
50 Control the IP allocation for the StorageVirtualInterface port. E.g.
51 [{'ip_address':'1.2.3.4'}]
53 StorageMgmtVirtualFixedIPs:
56 Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
57 [{'ip_address':'1.2.3.4'}]
60 default: 'localdomain'
63 The DNS domain used for the hosts. This should match the dhcp_domain
64 configured in the Undercloud neutron. Defaults to localdomain.
68 Extra properties or metadata passed to Nova for the created nodes in
69 the overcloud. It's accessible via the Nova metadata API.
72 # Controller-specific params
76 controllerExtraConfig:
79 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
84 Additional configuration to inject into the cluster. The format required
85 may be implementation specific, e.g puppet hieradata. Any role specific
86 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
89 description: A random string to be used as a salt when hashing to determine mappings in the ring.
94 # Compute-specific params
98 HypervisorNeutronPhysicalBridge:
101 An OVS bridge to create on each hypervisor. This defaults to br-ex the
102 same as the control plane nodes, as we have a uniform configuration of
103 the openvswitch agent. Typically should not need to be changed.
105 HypervisorNeutronPublicInterface:
107 description: What interface to add to the HypervisorNeutronPhysicalBridge.
112 - OS::TripleO::Services::CephMon
113 - OS::TripleO::Services::CephExternal
114 - OS::TripleO::Services::CinderApi
115 - OS::TripleO::Services::CinderScheduler
116 - OS::TripleO::Services::CinderVolume
117 - OS::TripleO::Services::Core
118 - OS::TripleO::Services::Kernel
119 - OS::TripleO::Services::Keystone
120 - OS::TripleO::Services::GlanceApi
121 - OS::TripleO::Services::GlanceRegistry
122 - OS::TripleO::Services::HeatApi
123 - OS::TripleO::Services::HeatApiCfn
124 - OS::TripleO::Services::HeatApiCloudwatch
125 - OS::TripleO::Services::HeatEngine
126 - OS::TripleO::Services::MySQL
127 - OS::TripleO::Services::NeutronDhcpAgent
128 - OS::TripleO::Services::NeutronL3Agent
129 - OS::TripleO::Services::NeutronMetadataAgent
130 - OS::TripleO::Services::NeutronServer
131 - OS::TripleO::Services::NeutronCorePlugin
132 - OS::TripleO::Services::NeutronOvsAgent
133 - OS::TripleO::Services::RabbitMQ
134 - OS::TripleO::Services::HAproxy
135 - OS::TripleO::Services::Keepalived
136 - OS::TripleO::Services::Memcached
137 - OS::TripleO::Services::Pacemaker
138 - OS::TripleO::Services::Redis
139 - OS::TripleO::Services::NovaConductor
140 - OS::TripleO::Services::MongoDb
141 - OS::TripleO::Services::NovaApi
142 - OS::TripleO::Services::NovaScheduler
143 - OS::TripleO::Services::NovaConsoleauth
144 - OS::TripleO::Services::NovaVncproxy
145 - OS::TripleO::Services::Ntp
146 - OS::TripleO::Services::SwiftProxy
147 - OS::TripleO::Services::SwiftStorage
148 - OS::TripleO::Services::SwiftRingBuilder
149 - OS::TripleO::Services::Snmp
150 - OS::TripleO::Services::Timezone
151 - OS::TripleO::Services::CeilometerApi
152 - OS::TripleO::Services::CeilometerCollector
153 - OS::TripleO::Services::CeilometerExpirer
154 - OS::TripleO::Services::CeilometerAgentCentral
155 - OS::TripleO::Services::CeilometerAgentNotification
156 - OS::TripleO::Services::Horizon
157 - OS::TripleO::Services::GnocchiApi
158 - OS::TripleO::Services::GnocchiMetricd
159 - OS::TripleO::Services::GnocchiStatsd
160 - OS::Tripleo::Services::ManilaApi
161 - OS::Tripleo::Services::ManilaScheduler
162 - OS::Tripleo::Services::ManilaShare
163 - OS::TripleO::Services::AodhApi
164 - OS::TripleO::Services::AodhEvaluator
165 - OS::TripleO::Services::AodhNotifier
166 - OS::TripleO::Services::AodhListener
167 - OS::TripleO::Services::SaharaApi
168 - OS::TripleO::Services::SaharaEngine
169 description: A list of service resources (configured in the Heat
170 resource_registry) which represent nested stacks
171 for each service that should get installed on the Controllers.
172 type: comma_delimited_list
176 - OS::TripleO::Services::CephClient
177 - OS::TripleO::Services::CephExternal
178 - OS::TripleO::Services::Timezone
179 - OS::TripleO::Services::Ntp
180 - OS::TripleO::Services::Snmp
181 - OS::TripleO::Services::NovaCompute
182 - OS::TripleO::Services::NovaLibvirt
183 - OS::TripleO::Services::Kernel
184 - OS::TripleO::Services::ComputeNeutronCorePlugin
185 - OS::TripleO::Services::ComputeNeutronOvsAgent
186 - OS::TripleO::Services::ComputeCeilometerAgent
187 - OS::TripleO::Services::ComputeNeutronL3Agent
188 - OS::TripleO::Services::ComputeNeutronMetadataAgent
189 description: A list of service resources (configured in the Heat
190 resource_registry) which represent nested stacks
191 for each service that should get installed on the Compute Nodes.
192 type: comma_delimited_list
194 # Block storage specific parameters
198 BlockStorageExtraConfig:
201 BlockStorage specific configuration to inject into the cluster. Same
202 structure as ExtraConfig.
204 BlockStorageServices:
206 - OS::TripleO::Services::CinderVolume
207 - OS::TripleO::Services::Kernel
208 - OS::TripleO::Services::Ntp
209 - OS::TripleO::Services::Timezone
210 - OS::TripleO::Services::Snmp
211 description: A list of service resources (configured in the Heat
212 resource_registry) which represent nested stacks
213 for each service that should get installed on the BlockStorage nodes.
214 type: comma_delimited_list
216 # Object storage specific parameters
220 ObjectStorageExtraConfig:
223 ObjectStorage specific configuration to inject into the cluster. Same
224 structure as ExtraConfig.
226 ObjectStorageServices:
228 - OS::TripleO::Services::Kernel
229 - OS::TripleO::Services::Ntp
230 - OS::TripleO::Services::SwiftStorage
231 - OS::TripleO::Services::SwiftRingBuilder
232 - OS::TripleO::Services::Snmp
233 - OS::TripleO::Services::Timezone
234 description: A list of service resources (configured in the Heat
235 resource_registry) which represent nested stacks
236 for each service that should get installed on the ObjectStorage nodes.
237 Note this role currently only supports steps 2, 3 and 4 configuration.
238 type: comma_delimited_list
241 # Ceph storage specific parameters
245 CephStorageExtraConfig:
248 CephStorage specific configuration to inject into the cluster. Same
249 structure as ExtraConfig.
253 - OS::TripleO::Services::CephOSD
254 - OS::TripleO::Services::Kernel
255 - OS::TripleO::Services::Ntp
256 - OS::TripleO::Services::Timezone
257 description: A list of service resources (configured in the Heat
258 resource_registry) which represent nested stacks
259 for each service that should get installed on the CephStorage nodes.
260 type: comma_delimited_list
262 # Hostname format for each role
263 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
264 # and %stackname% is replaced with OS::stack_name in the template below.
265 # If you want to use the heat generated names, pass '' (empty string).
266 ControllerHostnameFormat:
268 description: Format for Controller node hostnames
269 default: '%stackname%-controller-%index%'
270 ComputeHostnameFormat:
272 description: Format for Compute node hostnames
273 default: '%stackname%-novacompute-%index%'
274 BlockStorageHostnameFormat:
276 description: Format for BlockStorage node hostnames
277 default: '%stackname%-blockstorage-%index%'
278 ObjectStorageHostnameFormat:
280 description: Format for SwiftStorage node hostnames
281 default: '%stackname%-objectstorage-%index%'
282 CephStorageHostnameFormat:
284 description: Format for CephStorage node hostnames
285 default: '%stackname%-cephstorage-%index%'
287 # Identifiers to trigger tasks on nodes
292 Setting to a previously unused value during stack-update will trigger
293 package update on all nodes
298 Setting this to a unique value will re-run any deployment tasks which
299 perform configuration on a Heat stack-update.
301 # If you want to remove a specific node from a resource group, you can pass
302 # the node name or id as a <Group>RemovalPolicies parameter, for example:
303 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
304 ControllerRemovalPolicies:
308 List of resources to be removed from ControllerResourceGroup when
309 doing an update which requires removal of specific resources.
310 ComputeRemovalPolicies:
314 List of resources to be removed from ComputeResourceGroup when
315 doing an update which requires removal of specific resources.
316 BlockStorageRemovalPolicies:
320 List of resources to be removed from BlockStorageResourceGroup when
321 doing an update which requires removal of specific resources.
322 ObjectStorageRemovalPolicies:
326 List of resources to be removed from ObjectStorageResourceGroup when
327 doing an update which requires removal of specific resources.
328 CephStorageRemovalPolicies:
332 List of resources to be removed from CephStorageResourceGroup when
333 doing an update which requires removal of specific resources.
337 description: Do not use deprecated params, they will be removed.
339 - controllerExtraConfig
344 HeatAuthEncryptionKey:
345 type: OS::Heat::RandomString
348 type: OS::Heat::RandomString
353 type: OS::Heat::RandomString
358 type: OS::TripleO::ServiceNetMap
361 type: OS::TripleO::EndpointMap
363 CloudName: {get_param: CloudName}
364 NetIpMap: {get_attr: [VipMap, net_ip_map]}
365 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
367 ControllerServiceChain:
368 type: OS::TripleO::Services
370 Services: {get_param: ControllerServices}
371 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
374 type: OS::Heat::ResourceGroup
377 count: {get_param: ControllerCount}
378 removal_policies: {get_param: ControllerRemovalPolicies}
380 type: OS::TripleO::Controller
382 CloudDomain: {get_param: CloudDomain}
383 controllerExtraConfig: {get_param: controllerExtraConfig}
384 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
385 HorizonSecret: {get_resource: HorizonSecret}
386 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
387 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
388 PcsdPassword: {get_resource: PcsdPassword}
389 RabbitCookie: {get_attr: [RabbitCookie, value]}
390 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
391 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
392 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
393 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
394 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
397 template: {get_param: ControllerHostnameFormat}
399 '%stackname%': {get_param: 'OS::stack_name'}
401 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
402 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
406 type: OS::TripleO::Services
408 Services: {get_param: ComputeServices}
409 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
412 type: OS::Heat::ResourceGroup
415 count: {get_param: ComputeCount}
416 removal_policies: {get_param: ComputeRemovalPolicies}
418 type: OS::TripleO::Compute
420 CloudDomain: {get_param: CloudDomain}
421 GlanceHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
422 KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
423 KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
424 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
425 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
426 # L3 HA and Failover is not relevant for Computes, should be removed
427 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
428 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
429 RabbitHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
430 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
431 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
434 template: {get_param: ComputeHostnameFormat}
436 '%stackname%': {get_param: 'OS::stack_name'}
438 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
439 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
441 BlockStorageServiceChain:
442 type: OS::TripleO::Services
444 Services: {get_param: BlockStorageServices}
445 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
448 type: OS::Heat::ResourceGroup
451 count: {get_param: BlockStorageCount}
452 removal_policies: {get_param: BlockStorageRemovalPolicies}
454 type: OS::TripleO::BlockStorage
456 UpdateIdentifier: {get_param: UpdateIdentifier}
459 template: {get_param: BlockStorageHostnameFormat}
461 '%stackname%': {get_param: 'OS::stack_name'}
462 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
463 ExtraConfig: {get_param: ExtraConfig}
464 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
465 CloudDomain: {get_param: CloudDomain}
466 ServerMetadata: {get_param: ServerMetadata}
468 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
469 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
471 ObjectStorageServiceChain:
472 type: OS::TripleO::Services
474 Services: {get_param: ObjectStorageServices}
475 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
478 type: OS::Heat::ResourceGroup
481 count: {get_param: ObjectStorageCount}
482 removal_policies: {get_param: ObjectStorageRemovalPolicies}
484 type: OS::TripleO::ObjectStorage
486 HashSuffix: {get_param: SwiftHashSuffix}
487 UpdateIdentifier: {get_param: UpdateIdentifier}
488 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
491 template: {get_param: ObjectStorageHostnameFormat}
493 '%stackname%': {get_param: 'OS::stack_name'}
494 ExtraConfig: {get_param: ExtraConfig}
495 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
496 CloudDomain: {get_param: CloudDomain}
497 ServerMetadata: {get_param: ServerMetadata}
499 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
500 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
502 CephStorageServiceChain:
503 type: OS::TripleO::Services
505 Services: {get_param: CephStorageServices}
506 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
509 type: OS::Heat::ResourceGroup
512 count: {get_param: CephStorageCount}
513 removal_policies: {get_param: CephStorageRemovalPolicies}
515 type: OS::TripleO::CephStorage
517 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
518 UpdateIdentifier: {get_param: UpdateIdentifier}
521 template: {get_param: CephStorageHostnameFormat}
523 '%stackname%': {get_param: 'OS::stack_name'}
524 ExtraConfig: {get_param: ExtraConfig}
525 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
526 CloudDomain: {get_param: CloudDomain}
527 ServerMetadata: {get_param: ServerMetadata}
529 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
530 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
533 type: OS::TripleO::Network::Ports::NetIpListMap
535 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
536 ExternalIpList: {get_attr: [Controller, external_ip_address]}
537 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
538 StorageIpList: {get_attr: [Controller, storage_ip_address]}
539 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
540 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
541 ManagementIpList: {get_attr: [Controller, management_ip_address]}
544 type: OS::TripleO::AllNodes::SoftwareConfig
549 - {get_attr: [Compute, hosts_entry]}
552 - {get_attr: [Controller, hosts_entry]}
555 - {get_attr: [BlockStorage, hosts_entry]}
558 - {get_attr: [ObjectStorage, hosts_entry]}
561 - {get_attr: [CephStorage, hosts_entry]}
562 controller_ips: {get_attr: [Controller, ip_address]}
563 controller_names: {get_attr: [Controller, hostname]}
564 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
565 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
566 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
567 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
568 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
569 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
570 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
571 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
572 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
573 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
574 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
575 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
576 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
577 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
578 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
579 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
580 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
581 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
582 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
583 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
584 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
585 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
586 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
587 ceph_mon_node_names: {get_attr: [Controller, hostname]}
588 DeployIdentifier: {get_param: DeployIdentifier}
589 UpdateIdentifier: {get_param: UpdateIdentifier}
592 type: OS::Heat::RandomString
596 MysqlClusterUniquePart:
597 type: OS::Heat::RandomString
602 type: OS::Heat::RandomString
605 salt: {get_param: RabbitCookieSalt}
607 # creates the network architecture
609 type: OS::TripleO::Network
612 type: OS::Neutron::Port
615 name: control_virtual_ip
616 network: {get_param: NeutronControlPlaneID}
617 fixed_ips: {get_param: ControlFixedIPs}
618 replacement_policy: AUTO
622 type: OS::TripleO::Network::Ports::RedisVipPort
624 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
625 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
626 PortName: redis_virtual_ip
627 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
630 # The public VIP is on the External net, falls back to ctlplane
633 type: OS::TripleO::Network::Ports::ExternalVipPort
635 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
636 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
637 PortName: public_virtual_ip
638 FixedIPs: {get_param: PublicVirtualFixedIPs}
640 InternalApiVirtualIP:
642 type: OS::TripleO::Network::Ports::InternalApiVipPort
644 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
645 PortName: internal_api_virtual_ip
646 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
650 type: OS::TripleO::Network::Ports::StorageVipPort
652 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
653 PortName: storage_virtual_ip
654 FixedIPs: {get_param: StorageVirtualFixedIPs}
656 StorageMgmtVirtualIP:
658 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
660 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
661 PortName: storage_management_virtual_ip
662 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
665 type: OS::TripleO::Network::Ports::NetVipMap
667 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
668 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
669 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
670 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
671 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
672 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
673 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
674 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
675 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
676 # No tenant or management VIP required
679 type: OS::TripleO::VipConfig
682 type: OS::Heat::StructuredDeployments
685 config: {get_resource: VipConfig}
686 servers: {get_attr: [Controller, attributes, nova_server_resource]}
688 # service VIP mappings
689 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
690 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
691 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
692 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
693 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
694 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
695 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
696 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
697 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
698 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
699 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
700 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
701 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
702 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
703 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
704 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
705 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
706 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
707 # direct configuration of Virtual IPs for each network
708 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
709 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
710 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
711 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
712 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
713 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
714 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
716 ControllerSwiftDeployment:
717 type: OS::Heat::StructuredDeployments
719 name: ControllerSwiftDeployment
720 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
721 servers: {get_attr: [Controller, attributes, nova_server_resource]}
723 ObjectStorageSwiftDeployment:
724 type: OS::Heat::StructuredDeployments
726 name: ObjectStorageSwiftDeployment
727 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
728 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
730 SwiftDevicesAndProxyConfig:
731 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
733 controller_swift_devices: {get_attr: [Controller, swift_device]}
734 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
735 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
737 ControllerAllNodesDeployment:
738 type: OS::Heat::StructuredDeployments
740 name: ControllerAllNodesDeployment
741 config: {get_attr: [allNodesConfig, config_id]}
742 servers: {get_attr: [Controller, attributes, nova_server_resource]}
744 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
745 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
747 ComputeAllNodesDeployment:
748 type: OS::Heat::StructuredDeployments
750 name: ComputeAllNodesDeployment
751 config: {get_attr: [allNodesConfig, config_id]}
752 servers: {get_attr: [Compute, attributes, nova_server_resource]}
754 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
755 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
757 BlockStorageAllNodesDeployment:
758 type: OS::Heat::StructuredDeployments
760 name: BlockStorageAllNodesDeployment
761 config: {get_attr: [allNodesConfig, config_id]}
762 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
764 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
765 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
767 ObjectStorageAllNodesDeployment:
768 type: OS::Heat::StructuredDeployments
770 name: ObjectStorageAllNodesDeployment
771 config: {get_attr: [allNodesConfig, config_id]}
772 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
774 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
775 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
777 CephStorageAllNodesDeployment:
778 type: OS::Heat::StructuredDeployments
780 name: CephStorageAllNodesDeployment
781 config: {get_attr: [allNodesConfig, config_id]}
782 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
784 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
785 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
787 # All Nodes Validations
788 AllNodesValidationConfig:
789 type: OS::TripleO::AllNodes::Validation
794 - - {get_attr: [Controller, resource.0.external_ip_address]}
795 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
796 - {get_attr: [Controller, resource.0.storage_ip_address]}
797 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
798 - {get_attr: [Controller, resource.0.tenant_ip_address]}
800 ControllerAllNodesValidationDeployment:
801 type: OS::Heat::StructuredDeployments
802 depends_on: ControllerAllNodesDeployment
804 name: ControllerAllNodesValidationDeployment
805 config: {get_resource: AllNodesValidationConfig}
806 servers: {get_attr: [Controller, attributes, nova_server_resource]}
808 ComputeAllNodesValidationDeployment:
809 type: OS::Heat::StructuredDeployments
810 depends_on: ComputeAllNodesDeployment
812 name: ComputeAllNodesValidationDeployment
813 config: {get_resource: AllNodesValidationConfig}
814 servers: {get_attr: [Compute, attributes, nova_server_resource]}
816 BlockStorageAllNodesValidationDeployment:
817 type: OS::Heat::StructuredDeployments
818 depends_on: BlockStorageAllNodesDeployment
820 name: BlockStorageAllNodesValidationDeployment
821 config: {get_resource: AllNodesValidationConfig}
822 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
824 ObjectStorageAllNodesValidationDeployment:
825 type: OS::Heat::StructuredDeployments
826 depends_on: ObjectStorageAllNodesDeployment
828 name: ObjectStorageAllNodesValidationDeployment
829 config: {get_resource: AllNodesValidationConfig}
830 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
832 CephStorageAllNodesValidationDeployment:
833 type: OS::Heat::StructuredDeployments
834 depends_on: CephStorageAllNodesDeployment
836 name: CephStorageAllNodesValidationDeployment
837 config: {get_resource: AllNodesValidationConfig}
838 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
841 type: OS::TripleO::Tasks::UpdateWorkflow
843 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
844 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
845 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
846 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
847 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
849 deploy_identifier: {get_param: DeployIdentifier}
850 update_identifier: {get_param: UpdateIdentifier}
852 # Optional ExtraConfig for all nodes - all roles are passed in here, but
853 # the nested template may configure each role differently (or not at all)
855 type: OS::TripleO::AllNodesExtraConfig
858 - ComputeAllNodesValidationDeployment
859 - BlockStorageAllNodesValidationDeployment
860 - ObjectStorageAllNodesValidationDeployment
861 - CephStorageAllNodesValidationDeployment
862 - ControllerAllNodesValidationDeployment
864 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
865 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
866 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
867 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
868 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
870 # Nested stack deployment runs after all other controller deployments
871 ControllerNodesPostDeployment:
872 type: OS::TripleO::ControllerPostDeployment
873 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
875 servers: {get_attr: [Controller, attributes, nova_server_resource]}
876 RoleData: {get_attr: [ControllerServiceChain, role_data]}
878 ComputeNodesPostDeployment:
879 type: OS::TripleO::ComputePostDeployment
880 depends_on: [ComputeAllNodesDeployment]
882 servers: {get_attr: [Compute, attributes, nova_server_resource]}
883 RoleData: {get_attr: [ComputeServiceChain, role_data]}
885 ObjectStorageNodesPostDeployment:
886 type: OS::TripleO::ObjectStoragePostDeployment
887 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
889 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
890 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
892 BlockStorageNodesPostDeployment:
893 type: OS::TripleO::BlockStoragePostDeployment
894 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
896 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
897 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
899 CephStorageNodesPostDeployment:
900 type: OS::TripleO::CephStoragePostDeployment
901 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
903 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
904 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
908 description: URL for the Overcloud Keystone service
909 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
911 description: Keystone Admin VIP endpoint
912 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
914 description: Controller VIP for public API endpoints
915 value: {get_attr: [VipMap, net_ip_map, external]}
917 description: VIP for Aodh API internal endpoint
918 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
919 CeilometerInternalVip:
920 description: VIP for Ceilometer API internal endpoint
921 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
923 description: VIP for Cinder API internal endpoint
924 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
926 description: VIP for Glance API internal endpoint
927 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
929 description: VIP for Gnocchi API internal endpoint
930 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
932 description: VIP for Heat API internal endpoint
933 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
935 description: VIP for Ironic API internal endpoint
936 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
938 description: VIP for Keystone API internal endpoint
939 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
941 description: VIP for Manila API internal endpoint
942 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
944 description: VIP for Neutron API internal endpoint
945 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
947 description: VIP for Nova API internal endpoint
948 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
950 description: VIP for Sahara API internal endpoint
951 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
953 description: VIP for Swift Proxy internal endpoint
954 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
957 Mapping of the resources with the needed info for their endpoints.
958 This includes the protocol used, the IP, port and also a full
959 representation of the URI.
960 value: {get_attr: [EndpointMap, endpoint_map]}
963 The content that should be appended to your /etc/hosts if you want to get
964 hostname-based access to the deployed nodes (useful for testing without
966 value: {get_attr: [allNodesConfig, hosts_entries]}
968 description: The services enabled on each role
970 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
971 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
972 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
973 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
974 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}