1 heat_template_version: 2016-04-08
4 Deploy an OpenStack environment, consisting of several node types (roles),
5 Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
6 roles enable independent scaling of the storage components, but the minimal
7 deployment is one Controller and one Compute node.
10 # TODO(shadower): we should probably use the parameter groups to put
14 # Common parameters (not specific to a role)
17 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
21 description: Should be used for arbitrary ips.
23 InternalApiVirtualFixedIPs:
26 Control the IP allocation for the InternalApiVirtualInterface port. E.g.
27 [{'ip_address':'1.2.3.4'}]
29 NeutronControlPlaneID:
32 description: Neutron ID or name for ctlplane network.
33 NeutronPublicInterface:
35 description: What interface to bridge onto br-ex for network nodes.
37 PublicVirtualFixedIPs:
40 Control the IP allocation for the PublicVirtualInterface port. E.g.
41 [{'ip_address':'1.2.3.4'}]
46 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
47 StorageVirtualFixedIPs:
50 Control the IP allocation for the StorageVirtualInterface port. E.g.
51 [{'ip_address':'1.2.3.4'}]
53 StorageMgmtVirtualFixedIPs:
56 Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
57 [{'ip_address':'1.2.3.4'}]
60 default: 'localdomain'
63 The DNS domain used for the hosts. This should match the dhcp_domain
64 configured in the Undercloud neutron. Defaults to localdomain.
68 Extra properties or metadata passed to Nova for the created nodes in
69 the overcloud. It's accessible via the Nova metadata API.
72 # Controller-specific params
76 controllerExtraConfig:
79 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
84 Additional configuration to inject into the cluster. The format required
85 may be implementation specific, e.g puppet hieradata. Any role specific
86 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
89 description: A random string to be used as a salt when hashing to determine mappings in the ring.
94 # Compute-specific params
98 HypervisorNeutronPhysicalBridge:
101 An OVS bridge to create on each hypervisor. This defaults to br-ex the
102 same as the control plane nodes, as we have a uniform configuration of
103 the openvswitch agent. Typically should not need to be changed.
105 HypervisorNeutronPublicInterface:
107 description: What interface to add to the HypervisorNeutronPhysicalBridge.
112 - OS::TripleO::Services::CephMon
113 - OS::TripleO::Services::CephExternal
114 - OS::TripleO::Services::CinderApi
115 - OS::TripleO::Services::CinderBackup
116 - OS::TripleO::Services::CinderScheduler
117 - OS::TripleO::Services::CinderVolume
118 - OS::TripleO::Services::Core
119 - OS::TripleO::Services::Kernel
120 - OS::TripleO::Services::Keystone
121 - OS::TripleO::Services::GlanceApi
122 - OS::TripleO::Services::GlanceRegistry
123 - OS::TripleO::Services::HeatApi
124 - OS::TripleO::Services::HeatApiCfn
125 - OS::TripleO::Services::HeatApiCloudwatch
126 - OS::TripleO::Services::HeatEngine
127 - OS::TripleO::Services::MySQL
128 - OS::TripleO::Services::NeutronDhcpAgent
129 - OS::TripleO::Services::NeutronL3Agent
130 - OS::TripleO::Services::NeutronMetadataAgent
131 - OS::TripleO::Services::NeutronServer
132 - OS::TripleO::Services::NeutronCorePlugin
133 - OS::TripleO::Services::NeutronOvsAgent
134 - OS::TripleO::Services::RabbitMQ
135 - OS::TripleO::Services::HAproxy
136 - OS::TripleO::Services::Keepalived
137 - OS::TripleO::Services::Memcached
138 - OS::TripleO::Services::Pacemaker
139 - OS::TripleO::Services::Redis
140 - OS::TripleO::Services::NovaConductor
141 - OS::TripleO::Services::MongoDb
142 - OS::TripleO::Services::NovaApi
143 - OS::TripleO::Services::NovaScheduler
144 - OS::TripleO::Services::NovaConsoleauth
145 - OS::TripleO::Services::NovaVncproxy
146 - OS::TripleO::Services::Ntp
147 - OS::TripleO::Services::SwiftProxy
148 - OS::TripleO::Services::SwiftStorage
149 - OS::TripleO::Services::SwiftRingBuilder
150 - OS::TripleO::Services::Snmp
151 - OS::TripleO::Services::Timezone
152 - OS::TripleO::Services::CeilometerApi
153 - OS::TripleO::Services::CeilometerCollector
154 - OS::TripleO::Services::CeilometerExpirer
155 - OS::TripleO::Services::CeilometerAgentCentral
156 - OS::TripleO::Services::CeilometerAgentNotification
157 - OS::TripleO::Services::Horizon
158 - OS::TripleO::Services::GnocchiApi
159 - OS::TripleO::Services::GnocchiMetricd
160 - OS::TripleO::Services::GnocchiStatsd
161 - OS::Tripleo::Services::ManilaApi
162 - OS::Tripleo::Services::ManilaScheduler
163 - OS::Tripleo::Services::ManilaShare
164 - OS::TripleO::Services::AodhApi
165 - OS::TripleO::Services::AodhEvaluator
166 - OS::TripleO::Services::AodhNotifier
167 - OS::TripleO::Services::AodhListener
168 - OS::TripleO::Services::SaharaApi
169 - OS::TripleO::Services::SaharaEngine
170 - OS::TripleO::Services::IronicApi
171 - OS::TripleO::Services::IronicConductor
172 - OS::TripleO::Services::NovaIronic
173 description: A list of service resources (configured in the Heat
174 resource_registry) which represent nested stacks
175 for each service that should get installed on the Controllers.
176 type: comma_delimited_list
180 - OS::TripleO::Services::CephClient
181 - OS::TripleO::Services::CephExternal
182 - OS::TripleO::Services::Timezone
183 - OS::TripleO::Services::Ntp
184 - OS::TripleO::Services::Snmp
185 - OS::TripleO::Services::NovaCompute
186 - OS::TripleO::Services::NovaLibvirt
187 - OS::TripleO::Services::Kernel
188 - OS::TripleO::Services::ComputeNeutronCorePlugin
189 - OS::TripleO::Services::ComputeNeutronOvsAgent
190 - OS::TripleO::Services::ComputeCeilometerAgent
191 - OS::TripleO::Services::ComputeNeutronL3Agent
192 - OS::TripleO::Services::ComputeNeutronMetadataAgent
193 description: A list of service resources (configured in the Heat
194 resource_registry) which represent nested stacks
195 for each service that should get installed on the Compute Nodes.
196 type: comma_delimited_list
198 # Block storage specific parameters
202 BlockStorageExtraConfig:
205 BlockStorage specific configuration to inject into the cluster. Same
206 structure as ExtraConfig.
208 BlockStorageServices:
210 - OS::TripleO::Services::CinderVolume
211 - OS::TripleO::Services::Kernel
212 - OS::TripleO::Services::Ntp
213 - OS::TripleO::Services::Timezone
214 - OS::TripleO::Services::Snmp
215 description: A list of service resources (configured in the Heat
216 resource_registry) which represent nested stacks
217 for each service that should get installed on the BlockStorage nodes.
218 type: comma_delimited_list
220 # Object storage specific parameters
224 ObjectStorageExtraConfig:
227 ObjectStorage specific configuration to inject into the cluster. Same
228 structure as ExtraConfig.
230 ObjectStorageServices:
232 - OS::TripleO::Services::Kernel
233 - OS::TripleO::Services::Ntp
234 - OS::TripleO::Services::SwiftStorage
235 - OS::TripleO::Services::SwiftRingBuilder
236 - OS::TripleO::Services::Snmp
237 - OS::TripleO::Services::Timezone
238 description: A list of service resources (configured in the Heat
239 resource_registry) which represent nested stacks
240 for each service that should get installed on the ObjectStorage nodes.
241 Note this role currently only supports steps 2, 3 and 4 configuration.
242 type: comma_delimited_list
245 # Ceph storage specific parameters
249 CephStorageExtraConfig:
252 CephStorage specific configuration to inject into the cluster. Same
253 structure as ExtraConfig.
257 - OS::TripleO::Services::CephOSD
258 - OS::TripleO::Services::Kernel
259 - OS::TripleO::Services::Ntp
260 - OS::TripleO::Services::Timezone
261 description: A list of service resources (configured in the Heat
262 resource_registry) which represent nested stacks
263 for each service that should get installed on the CephStorage nodes.
264 type: comma_delimited_list
266 # Hostname format for each role
267 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
268 # and %stackname% is replaced with OS::stack_name in the template below.
269 # If you want to use the heat generated names, pass '' (empty string).
270 ControllerHostnameFormat:
272 description: Format for Controller node hostnames
273 default: '%stackname%-controller-%index%'
274 ComputeHostnameFormat:
276 description: Format for Compute node hostnames
277 default: '%stackname%-novacompute-%index%'
278 BlockStorageHostnameFormat:
280 description: Format for BlockStorage node hostnames
281 default: '%stackname%-blockstorage-%index%'
282 ObjectStorageHostnameFormat:
284 description: Format for SwiftStorage node hostnames
285 default: '%stackname%-objectstorage-%index%'
286 CephStorageHostnameFormat:
288 description: Format for CephStorage node hostnames
289 default: '%stackname%-cephstorage-%index%'
291 # Identifiers to trigger tasks on nodes
296 Setting to a previously unused value during stack-update will trigger
297 package update on all nodes
302 Setting this to a unique value will re-run any deployment tasks which
303 perform configuration on a Heat stack-update.
305 # If you want to remove a specific node from a resource group, you can pass
306 # the node name or id as a <Group>RemovalPolicies parameter, for example:
307 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
308 ControllerRemovalPolicies:
312 List of resources to be removed from ControllerResourceGroup when
313 doing an update which requires removal of specific resources.
314 ComputeRemovalPolicies:
318 List of resources to be removed from ComputeResourceGroup when
319 doing an update which requires removal of specific resources.
320 BlockStorageRemovalPolicies:
324 List of resources to be removed from BlockStorageResourceGroup when
325 doing an update which requires removal of specific resources.
326 ObjectStorageRemovalPolicies:
330 List of resources to be removed from ObjectStorageResourceGroup when
331 doing an update which requires removal of specific resources.
332 CephStorageRemovalPolicies:
336 List of resources to be removed from CephStorageResourceGroup when
337 doing an update which requires removal of specific resources.
341 description: Do not use deprecated params, they will be removed.
343 - controllerExtraConfig
348 HeatAuthEncryptionKey:
349 type: OS::Heat::RandomString
352 type: OS::Heat::RandomString
357 type: OS::Heat::RandomString
362 type: OS::TripleO::ServiceNetMap
365 type: OS::TripleO::EndpointMap
367 CloudName: {get_param: CloudName}
368 NetIpMap: {get_attr: [VipMap, net_ip_map]}
369 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
371 ControllerServiceChain:
372 type: OS::TripleO::Services
374 Services: {get_param: ControllerServices}
375 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
378 type: OS::Heat::ResourceGroup
381 count: {get_param: ControllerCount}
382 removal_policies: {get_param: ControllerRemovalPolicies}
384 type: OS::TripleO::Controller
386 CloudDomain: {get_param: CloudDomain}
387 controllerExtraConfig: {get_param: controllerExtraConfig}
388 HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
389 HorizonSecret: {get_resource: HorizonSecret}
390 MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
391 MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
392 PcsdPassword: {get_resource: PcsdPassword}
393 RabbitCookie: {get_attr: [RabbitCookie, value]}
394 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
395 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
396 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
397 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
398 MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
401 template: {get_param: ControllerHostnameFormat}
403 '%stackname%': {get_param: 'OS::stack_name'}
405 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
406 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
410 type: OS::TripleO::Services
412 Services: {get_param: ComputeServices}
413 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
416 type: OS::Heat::ResourceGroup
419 count: {get_param: ComputeCount}
420 removal_policies: {get_param: ComputeRemovalPolicies}
422 type: OS::TripleO::Compute
424 CloudDomain: {get_param: CloudDomain}
425 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
426 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
427 # L3 HA and Failover is not relevant for Computes, should be removed
428 NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
429 NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
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]}