1 heat_template_version: 2016-04-08
4 Deploy an OpenStack environment, consisting of several node types (roles),
5 Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
6 roles enable independent scaling of the storage components, but the minimal
7 deployment is one Controller and one Compute node.
10 # TODO(shadower): we should probably use the parameter groups to put
14 # Common parameters (not specific to a role)
17 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
21 description: Should be used for arbitrary ips.
23 InternalApiVirtualFixedIPs:
26 Control the IP allocation for the InternalApiVirtualInterface port. E.g.
27 [{'ip_address':'1.2.3.4'}]
29 NeutronControlPlaneID:
32 description: Neutron ID or name for ctlplane network.
33 NeutronPublicInterface:
35 description: What interface to bridge onto br-ex for network nodes.
37 PublicVirtualFixedIPs:
40 Control the IP allocation for the PublicVirtualInterface port. E.g.
41 [{'ip_address':'1.2.3.4'}]
46 description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
47 StorageVirtualFixedIPs:
50 Control the IP allocation for the StorageVirtualInterface port. E.g.
51 [{'ip_address':'1.2.3.4'}]
53 StorageMgmtVirtualFixedIPs:
56 Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
57 [{'ip_address':'1.2.3.4'}]
62 Control the IP allocation for the virtual IP used by Redis. E.g.
63 [{'ip_address':'1.2.3.4'}]
66 default: 'localdomain'
69 The DNS domain used for the hosts. This should match the dhcp_domain
70 configured in the Undercloud neutron. Defaults to localdomain.
74 Extra properties or metadata passed to Nova for the created nodes in
75 the overcloud. It's accessible via the Nova metadata API.
78 # Controller-specific params
82 controllerExtraConfig:
85 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
90 Additional configuration to inject into the cluster. The format required
91 may be implementation specific, e.g puppet hieradata. Any role specific
92 ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
95 # Compute-specific params
99 HypervisorNeutronPhysicalBridge:
102 An OVS bridge to create on each hypervisor. This defaults to br-ex the
103 same as the control plane nodes, as we have a uniform configuration of
104 the openvswitch agent. Typically should not need to be changed.
106 HypervisorNeutronPublicInterface:
108 description: What interface to add to the HypervisorNeutronPhysicalBridge.
113 - OS::TripleO::Services::CephMon
114 - OS::TripleO::Services::CephExternal
115 - OS::TripleO::Services::CinderApi
116 - OS::TripleO::Services::CinderBackup
117 - OS::TripleO::Services::CinderScheduler
118 - OS::TripleO::Services::CinderVolume
119 - OS::TripleO::Services::Core
120 - OS::TripleO::Services::Kernel
121 - OS::TripleO::Services::Keystone
122 - OS::TripleO::Services::GlanceApi
123 - OS::TripleO::Services::GlanceRegistry
124 - OS::TripleO::Services::HeatApi
125 - OS::TripleO::Services::HeatApiCfn
126 - OS::TripleO::Services::HeatApiCloudwatch
127 - OS::TripleO::Services::HeatEngine
128 - OS::TripleO::Services::MySQL
129 - OS::TripleO::Services::NeutronDhcpAgent
130 - OS::TripleO::Services::NeutronL3Agent
131 - OS::TripleO::Services::NeutronMetadataAgent
132 - OS::TripleO::Services::NeutronApi
133 - OS::TripleO::Services::NeutronCorePlugin
134 - OS::TripleO::Services::NeutronOvsAgent
135 - OS::TripleO::Services::RabbitMQ
136 - OS::TripleO::Services::HAproxy
137 - OS::TripleO::Services::Keepalived
138 - OS::TripleO::Services::Memcached
139 - OS::TripleO::Services::Pacemaker
140 - OS::TripleO::Services::Redis
141 - OS::TripleO::Services::NovaConductor
142 - OS::TripleO::Services::MongoDb
143 - OS::TripleO::Services::NovaApi
144 - OS::TripleO::Services::NovaScheduler
145 - OS::TripleO::Services::NovaConsoleauth
146 - OS::TripleO::Services::NovaVncproxy
147 - OS::TripleO::Services::Ntp
148 - OS::TripleO::Services::SwiftProxy
149 - OS::TripleO::Services::SwiftStorage
150 - OS::TripleO::Services::SwiftRingBuilder
151 - OS::TripleO::Services::Snmp
152 - OS::TripleO::Services::Timezone
153 - OS::TripleO::Services::CeilometerApi
154 - OS::TripleO::Services::CeilometerCollector
155 - OS::TripleO::Services::CeilometerExpirer
156 - OS::TripleO::Services::CeilometerAgentCentral
157 - OS::TripleO::Services::CeilometerAgentNotification
158 - OS::TripleO::Services::Horizon
159 - OS::TripleO::Services::GnocchiApi
160 - OS::TripleO::Services::GnocchiMetricd
161 - OS::TripleO::Services::GnocchiStatsd
162 - OS::Tripleo::Services::ManilaApi
163 - OS::Tripleo::Services::ManilaScheduler
164 - OS::Tripleo::Services::ManilaShare
165 - OS::TripleO::Services::AodhApi
166 - OS::TripleO::Services::AodhEvaluator
167 - OS::TripleO::Services::AodhNotifier
168 - OS::TripleO::Services::AodhListener
169 - OS::TripleO::Services::SaharaApi
170 - OS::TripleO::Services::SaharaEngine
171 - OS::TripleO::Services::IronicApi
172 - OS::TripleO::Services::IronicConductor
173 - OS::TripleO::Services::NovaIronic
174 - OS::TripleO::Services::TripleoPackages
175 - OS::TripleO::Services::TripleoFirewall
176 description: A list of service resources (configured in the Heat
177 resource_registry) which represent nested stacks
178 for each service that should get installed on the Controllers.
179 type: comma_delimited_list
183 - OS::TripleO::Services::CephClient
184 - OS::TripleO::Services::CephExternal
185 - OS::TripleO::Services::Timezone
186 - OS::TripleO::Services::Ntp
187 - OS::TripleO::Services::Snmp
188 - OS::TripleO::Services::NovaCompute
189 - OS::TripleO::Services::NovaLibvirt
190 - OS::TripleO::Services::Kernel
191 - OS::TripleO::Services::ComputeNeutronCorePlugin
192 - OS::TripleO::Services::ComputeNeutronOvsAgent
193 - OS::TripleO::Services::ComputeCeilometerAgent
194 - OS::TripleO::Services::ComputeNeutronL3Agent
195 - OS::TripleO::Services::ComputeNeutronMetadataAgent
196 - OS::TripleO::Services::TripleoPackages
197 - OS::TripleO::Services::TripleoFirewall
198 description: A list of service resources (configured in the Heat
199 resource_registry) which represent nested stacks
200 for each service that should get installed on the Compute Nodes.
201 type: comma_delimited_list
203 # Block storage specific parameters
207 BlockStorageExtraConfig:
210 BlockStorage specific configuration to inject into the cluster. Same
211 structure as ExtraConfig.
213 BlockStorageServices:
215 - OS::TripleO::Services::CinderVolume
216 - OS::TripleO::Services::Kernel
217 - OS::TripleO::Services::Ntp
218 - OS::TripleO::Services::Timezone
219 - OS::TripleO::Services::Snmp
220 - OS::TripleO::Services::TripleoPackages
221 - OS::TripleO::Services::TripleoFirewall
222 description: A list of service resources (configured in the Heat
223 resource_registry) which represent nested stacks
224 for each service that should get installed on the BlockStorage nodes.
225 type: comma_delimited_list
227 # Object storage specific parameters
231 ObjectStorageExtraConfig:
234 ObjectStorage specific configuration to inject into the cluster. Same
235 structure as ExtraConfig.
237 ObjectStorageServices:
239 - OS::TripleO::Services::Kernel
240 - OS::TripleO::Services::Ntp
241 - OS::TripleO::Services::SwiftStorage
242 - OS::TripleO::Services::SwiftRingBuilder
243 - OS::TripleO::Services::Snmp
244 - OS::TripleO::Services::Timezone
245 - OS::TripleO::Services::TripleoPackages
246 - OS::TripleO::Services::TripleoFirewall
247 description: A list of service resources (configured in the Heat
248 resource_registry) which represent nested stacks
249 for each service that should get installed on the ObjectStorage nodes.
250 Note this role currently only supports steps 2, 3 and 4 configuration.
251 type: comma_delimited_list
254 # Ceph storage specific parameters
258 CephStorageExtraConfig:
261 CephStorage specific configuration to inject into the cluster. Same
262 structure as ExtraConfig.
266 - OS::TripleO::Services::CephOSD
267 - OS::TripleO::Services::Kernel
268 - OS::TripleO::Services::Ntp
269 - OS::TripleO::Services::Timezone
270 - OS::TripleO::Services::TripleoPackages
271 - OS::TripleO::Services::TripleoFirewall
272 description: A list of service resources (configured in the Heat
273 resource_registry) which represent nested stacks
274 for each service that should get installed on the CephStorage nodes.
275 type: comma_delimited_list
277 # Hostname format for each role
278 # Note %index% is translated into the index of the node, e.g 0/1/2 etc
279 # and %stackname% is replaced with OS::stack_name in the template below.
280 # If you want to use the heat generated names, pass '' (empty string).
281 ControllerHostnameFormat:
283 description: Format for Controller node hostnames
284 default: '%stackname%-controller-%index%'
285 ComputeHostnameFormat:
287 description: Format for Compute node hostnames
288 default: '%stackname%-novacompute-%index%'
289 BlockStorageHostnameFormat:
291 description: Format for BlockStorage node hostnames
292 default: '%stackname%-blockstorage-%index%'
293 ObjectStorageHostnameFormat:
295 description: Format for SwiftStorage node hostnames
296 default: '%stackname%-objectstorage-%index%'
297 CephStorageHostnameFormat:
299 description: Format for CephStorage node hostnames
300 default: '%stackname%-cephstorage-%index%'
302 # Identifiers to trigger tasks on nodes
307 Setting to a previously unused value during stack-update will trigger
308 package update on all nodes
313 Setting this to a unique value will re-run any deployment tasks which
314 perform configuration on a Heat stack-update.
316 # If you want to remove a specific node from a resource group, you can pass
317 # the node name or id as a <Group>RemovalPolicies parameter, for example:
318 # ComputeRemovalPolicies: [{'resource_list': ['0']}]
319 ControllerRemovalPolicies:
323 List of resources to be removed from ControllerResourceGroup when
324 doing an update which requires removal of specific resources.
325 ComputeRemovalPolicies:
329 List of resources to be removed from ComputeResourceGroup when
330 doing an update which requires removal of specific resources.
331 BlockStorageRemovalPolicies:
335 List of resources to be removed from BlockStorageResourceGroup when
336 doing an update which requires removal of specific resources.
337 ObjectStorageRemovalPolicies:
341 List of resources to be removed from ObjectStorageResourceGroup when
342 doing an update which requires removal of specific resources.
343 CephStorageRemovalPolicies:
347 List of resources to be removed from CephStorageResourceGroup when
348 doing an update which requires removal of specific resources.
352 description: Do not use deprecated params, they will be removed.
354 - controllerExtraConfig
359 HeatAuthEncryptionKey:
360 type: OS::Heat::RandomString
363 type: OS::Heat::RandomString
368 type: OS::Heat::RandomString
373 type: OS::TripleO::ServiceNetMap
376 type: OS::TripleO::EndpointMap
378 CloudName: {get_param: CloudName}
379 NetIpMap: {get_attr: [VipMap, net_ip_map]}
380 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
382 ControllerServiceChain:
383 type: OS::TripleO::Services
385 Services: {get_param: ControllerServices}
386 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
387 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
388 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
391 type: OS::Heat::ResourceGroup
394 count: {get_param: ControllerCount}
395 removal_policies: {get_param: ControllerRemovalPolicies}
397 type: OS::TripleO::Controller
399 CloudDomain: {get_param: CloudDomain}
400 controllerExtraConfig: {get_param: controllerExtraConfig}
401 HorizonSecret: {get_resource: HorizonSecret}
402 PcsdPassword: {get_resource: PcsdPassword}
403 RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
404 RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
405 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
406 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
409 template: {get_param: ControllerHostnameFormat}
411 '%stackname%': {get_param: 'OS::stack_name'}
413 ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
414 ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
417 type: OS::TripleO::Services
419 Services: {get_param: ComputeServices}
420 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
421 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
422 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
425 type: OS::Heat::ResourceGroup
428 count: {get_param: ComputeCount}
429 removal_policies: {get_param: ComputeRemovalPolicies}
431 type: OS::TripleO::Compute
433 CloudDomain: {get_param: CloudDomain}
434 NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
435 NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
436 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
437 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
440 template: {get_param: ComputeHostnameFormat}
442 '%stackname%': {get_param: 'OS::stack_name'}
444 ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
445 ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
447 BlockStorageServiceChain:
448 type: OS::TripleO::Services
450 Services: {get_param: BlockStorageServices}
451 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
452 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
453 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
456 type: OS::Heat::ResourceGroup
459 count: {get_param: BlockStorageCount}
460 removal_policies: {get_param: BlockStorageRemovalPolicies}
462 type: OS::TripleO::BlockStorage
464 UpdateIdentifier: {get_param: UpdateIdentifier}
467 template: {get_param: BlockStorageHostnameFormat}
469 '%stackname%': {get_param: 'OS::stack_name'}
470 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
471 ExtraConfig: {get_param: ExtraConfig}
472 BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
473 CloudDomain: {get_param: CloudDomain}
474 ServerMetadata: {get_param: ServerMetadata}
476 ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
477 ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
479 ObjectStorageServiceChain:
480 type: OS::TripleO::Services
482 Services: {get_param: ObjectStorageServices}
483 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
484 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
485 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
488 type: OS::Heat::ResourceGroup
491 count: {get_param: ObjectStorageCount}
492 removal_policies: {get_param: ObjectStorageRemovalPolicies}
494 type: OS::TripleO::ObjectStorage
496 UpdateIdentifier: {get_param: UpdateIdentifier}
497 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
500 template: {get_param: ObjectStorageHostnameFormat}
502 '%stackname%': {get_param: 'OS::stack_name'}
503 ExtraConfig: {get_param: ExtraConfig}
504 ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
505 CloudDomain: {get_param: CloudDomain}
506 ServerMetadata: {get_param: ServerMetadata}
508 ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
509 ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
511 CephStorageServiceChain:
512 type: OS::TripleO::Services
514 Services: {get_param: CephStorageServices}
515 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
516 EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
517 DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
520 type: OS::Heat::ResourceGroup
523 count: {get_param: CephStorageCount}
524 removal_policies: {get_param: CephStorageRemovalPolicies}
526 type: OS::TripleO::CephStorage
528 ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
529 UpdateIdentifier: {get_param: UpdateIdentifier}
532 template: {get_param: CephStorageHostnameFormat}
534 '%stackname%': {get_param: 'OS::stack_name'}
535 ExtraConfig: {get_param: ExtraConfig}
536 CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
537 CloudDomain: {get_param: CloudDomain}
538 ServerMetadata: {get_param: ServerMetadata}
540 ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
541 ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
544 type: OS::TripleO::Network::Ports::NetIpListMap
546 ControlPlaneIpList: {get_attr: [Controller, ip_address]}
547 ExternalIpList: {get_attr: [Controller, external_ip_address]}
548 InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
549 StorageIpList: {get_attr: [Controller, storage_ip_address]}
550 StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
551 TenantIpList: {get_attr: [Controller, tenant_ip_address]}
552 ManagementIpList: {get_attr: [Controller, management_ip_address]}
555 type: OS::TripleO::AllNodes::SoftwareConfig
560 - {get_attr: [Compute, hosts_entry]}
563 - {get_attr: [Controller, hosts_entry]}
566 - {get_attr: [BlockStorage, hosts_entry]}
569 - {get_attr: [ObjectStorage, hosts_entry]}
572 - {get_attr: [CephStorage, hosts_entry]}
573 controller_ips: {get_attr: [Controller, ip_address]}
574 controller_names: {get_attr: [Controller, hostname]}
575 rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
576 mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
577 redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
578 memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
579 mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
580 horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
581 heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
582 swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
583 ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
584 aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
585 gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
586 nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
587 nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
588 glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
589 glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
590 cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
591 manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
592 neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
593 keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
594 keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
595 sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
596 ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
597 ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
598 ceph_mon_node_names: {get_attr: [Controller, hostname]}
599 DeployIdentifier: {get_param: DeployIdentifier}
600 UpdateIdentifier: {get_param: UpdateIdentifier}
603 type: OS::Heat::RandomString
608 type: OS::Heat::RandomString
611 salt: {get_param: RabbitCookieSalt}
614 type: OS::TripleO::DefaultPasswords
616 DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
617 DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
618 DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
619 DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
620 DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
622 # creates the network architecture
624 type: OS::TripleO::Network
627 type: OS::Neutron::Port
630 name: control_virtual_ip
631 network: {get_param: NeutronControlPlaneID}
632 fixed_ips: {get_param: ControlFixedIPs}
633 replacement_policy: AUTO
637 type: OS::TripleO::Network::Ports::RedisVipPort
639 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
640 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
641 PortName: redis_virtual_ip
642 NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
644 FixedIPs: {get_param: RedisVirtualFixedIPs}
646 # The public VIP is on the External net, falls back to ctlplane
649 type: OS::TripleO::Network::Ports::ExternalVipPort
651 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
652 ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
653 PortName: public_virtual_ip
654 FixedIPs: {get_param: PublicVirtualFixedIPs}
656 InternalApiVirtualIP:
658 type: OS::TripleO::Network::Ports::InternalApiVipPort
660 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
661 PortName: internal_api_virtual_ip
662 FixedIPs: {get_param: InternalApiVirtualFixedIPs}
666 type: OS::TripleO::Network::Ports::StorageVipPort
668 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
669 PortName: storage_virtual_ip
670 FixedIPs: {get_param: StorageVirtualFixedIPs}
672 StorageMgmtVirtualIP:
674 type: OS::TripleO::Network::Ports::StorageMgmtVipPort
676 ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
677 PortName: storage_management_virtual_ip
678 FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
681 type: OS::TripleO::Network::Ports::NetVipMap
683 ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
684 ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
685 ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
686 InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
687 InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
688 StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
689 StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
690 StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
691 StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
692 # No tenant or management VIP required
695 type: OS::TripleO::VipConfig
698 type: OS::Heat::StructuredDeployments
701 config: {get_resource: VipConfig}
702 servers: {get_attr: [Controller, attributes, nova_server_resource]}
704 # service VIP mappings
705 keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
706 keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
707 neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
708 cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
709 glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
710 glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
711 swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
712 nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
713 nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
714 ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
715 aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
716 gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
717 heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
718 horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
719 redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
720 manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
721 mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
722 rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
723 # direct configuration of Virtual IPs for each network
724 control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
725 public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
726 internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
727 sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
728 ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
729 storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
730 storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
732 ControllerSwiftDeployment:
733 type: OS::Heat::StructuredDeployments
735 name: ControllerSwiftDeployment
736 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
737 servers: {get_attr: [Controller, attributes, nova_server_resource]}
739 ObjectStorageSwiftDeployment:
740 type: OS::Heat::StructuredDeployments
742 name: ObjectStorageSwiftDeployment
743 config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
744 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
746 SwiftDevicesAndProxyConfig:
747 type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
749 controller_swift_devices: {get_attr: [Controller, swift_device]}
750 object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
751 controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
753 ControllerAllNodesDeployment:
754 type: OS::Heat::StructuredDeployments
756 name: ControllerAllNodesDeployment
757 config: {get_attr: [allNodesConfig, config_id]}
758 servers: {get_attr: [Controller, attributes, nova_server_resource]}
760 bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
761 bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
763 ComputeAllNodesDeployment:
764 type: OS::Heat::StructuredDeployments
766 name: ComputeAllNodesDeployment
767 config: {get_attr: [allNodesConfig, config_id]}
768 servers: {get_attr: [Compute, attributes, nova_server_resource]}
770 bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
771 bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
773 BlockStorageAllNodesDeployment:
774 type: OS::Heat::StructuredDeployments
776 name: BlockStorageAllNodesDeployment
777 config: {get_attr: [allNodesConfig, config_id]}
778 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
780 bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
781 bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
783 ObjectStorageAllNodesDeployment:
784 type: OS::Heat::StructuredDeployments
786 name: ObjectStorageAllNodesDeployment
787 config: {get_attr: [allNodesConfig, config_id]}
788 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
790 bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
791 bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
793 CephStorageAllNodesDeployment:
794 type: OS::Heat::StructuredDeployments
796 name: CephStorageAllNodesDeployment
797 config: {get_attr: [allNodesConfig, config_id]}
798 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
800 bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
801 bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
803 # All Nodes Validations
804 AllNodesValidationConfig:
805 type: OS::TripleO::AllNodes::Validation
810 - - {get_attr: [Controller, resource.0.external_ip_address]}
811 - {get_attr: [Controller, resource.0.internal_api_ip_address]}
812 - {get_attr: [Controller, resource.0.storage_ip_address]}
813 - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
814 - {get_attr: [Controller, resource.0.tenant_ip_address]}
815 - {get_attr: [Controller, resource.0.management_ip_address]}
817 ControllerAllNodesValidationDeployment:
818 type: OS::Heat::StructuredDeployments
819 depends_on: ControllerAllNodesDeployment
821 name: ControllerAllNodesValidationDeployment
822 config: {get_resource: AllNodesValidationConfig}
823 servers: {get_attr: [Controller, attributes, nova_server_resource]}
825 ComputeAllNodesValidationDeployment:
826 type: OS::Heat::StructuredDeployments
827 depends_on: ComputeAllNodesDeployment
829 name: ComputeAllNodesValidationDeployment
830 config: {get_resource: AllNodesValidationConfig}
831 servers: {get_attr: [Compute, attributes, nova_server_resource]}
833 BlockStorageAllNodesValidationDeployment:
834 type: OS::Heat::StructuredDeployments
835 depends_on: BlockStorageAllNodesDeployment
837 name: BlockStorageAllNodesValidationDeployment
838 config: {get_resource: AllNodesValidationConfig}
839 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
841 ObjectStorageAllNodesValidationDeployment:
842 type: OS::Heat::StructuredDeployments
843 depends_on: ObjectStorageAllNodesDeployment
845 name: ObjectStorageAllNodesValidationDeployment
846 config: {get_resource: AllNodesValidationConfig}
847 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
849 CephStorageAllNodesValidationDeployment:
850 type: OS::Heat::StructuredDeployments
851 depends_on: CephStorageAllNodesDeployment
853 name: CephStorageAllNodesValidationDeployment
854 config: {get_resource: AllNodesValidationConfig}
855 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
858 type: OS::TripleO::Tasks::UpdateWorkflow
860 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
861 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
862 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
863 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
864 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
866 deploy_identifier: {get_param: DeployIdentifier}
867 update_identifier: {get_param: UpdateIdentifier}
869 # Optional ExtraConfig for all nodes - all roles are passed in here, but
870 # the nested template may configure each role differently (or not at all)
872 type: OS::TripleO::AllNodesExtraConfig
875 - ComputeAllNodesValidationDeployment
876 - BlockStorageAllNodesValidationDeployment
877 - ObjectStorageAllNodesValidationDeployment
878 - CephStorageAllNodesValidationDeployment
879 - ControllerAllNodesValidationDeployment
881 controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
882 compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
883 blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
884 objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
885 cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
887 # Nested stack deployment runs after all other controller deployments
888 ControllerNodesPostDeployment:
889 type: OS::TripleO::ControllerPostDeployment
890 depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
892 servers: {get_attr: [Controller, attributes, nova_server_resource]}
893 RoleData: {get_attr: [ControllerServiceChain, role_data]}
895 ComputeNodesPostDeployment:
896 type: OS::TripleO::ComputePostDeployment
897 depends_on: [ComputeAllNodesDeployment]
899 servers: {get_attr: [Compute, attributes, nova_server_resource]}
900 RoleData: {get_attr: [ComputeServiceChain, role_data]}
902 ObjectStorageNodesPostDeployment:
903 type: OS::TripleO::ObjectStoragePostDeployment
904 depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
906 servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
907 RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
909 BlockStorageNodesPostDeployment:
910 type: OS::TripleO::BlockStoragePostDeployment
911 depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
913 servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
914 RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
916 CephStorageNodesPostDeployment:
917 type: OS::TripleO::CephStoragePostDeployment
918 depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
920 servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
921 RoleData: {get_attr: [CephStorageServiceChain, role_data]}
925 description: URL for the Overcloud Keystone service
926 value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
928 description: Keystone Admin VIP endpoint
929 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
931 description: Controller VIP for public API endpoints
932 value: {get_attr: [VipMap, net_ip_map, external]}
934 description: VIP for Aodh API internal endpoint
935 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
936 CeilometerInternalVip:
937 description: VIP for Ceilometer API internal endpoint
938 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
940 description: VIP for Cinder API internal endpoint
941 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
943 description: VIP for Glance API internal endpoint
944 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
946 description: VIP for Gnocchi API internal endpoint
947 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
949 description: VIP for Heat API internal endpoint
950 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
952 description: VIP for Ironic API internal endpoint
953 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
955 description: VIP for Keystone API internal endpoint
956 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
958 description: VIP for Manila API internal endpoint
959 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
961 description: VIP for Neutron API internal endpoint
962 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
964 description: VIP for Nova API internal endpoint
965 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
967 description: VIP for Sahara API internal endpoint
968 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
970 description: VIP for Swift Proxy internal endpoint
971 value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
974 Mapping of the resources with the needed info for their endpoints.
975 This includes the protocol used, the IP, port and also a full
976 representation of the URI.
977 value: {get_attr: [EndpointMap, endpoint_map]}
980 The content that should be appended to your /etc/hosts if you want to get
981 hostname-based access to the deployed nodes (useful for testing without
983 value: {get_attr: [allNodesConfig, hosts_entries]}
985 description: The services enabled on each role
987 Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
988 Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
989 BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
990 ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
991 CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}