neutron: stop include ::neutron & ::neutron::config
[apex-tripleo-heat-templates.git] / overcloud.yaml
1 heat_template_version: 2016-04-08
2
3 description: >
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.
8
9
10 # TODO(shadower): we should probably use the parameter groups to put
11 # some order in here.
12 parameters:
13
14   # Common parameters (not specific to a role)
15   AdminPassword:
16     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
17     type: string
18     hidden: true
19   AodhPassword:
20     description: The password for the aodh services.
21     type: string
22     hidden: true
23   CeilometerBackend:
24     default: 'mongodb'
25     description: The ceilometer backend type.
26     type: string
27   CeilometerMeteringSecret:
28     description: Secret shared by the ceilometer services.
29     type: string
30     hidden: true
31   CeilometerPassword:
32     description: The password for the ceilometer service account.
33     type: string
34     hidden: true
35   CeilometerMeterDispatcher:
36     default: 'database'
37     description: Dispatcher to process meter data
38     type: string
39     constraints:
40     - allowed_values: ['gnocchi', 'database']
41   # This has to be an UUID so for now we generate it outside the template
42   CephClusterFSID:
43     default: ''
44     type: string
45     description: The Ceph cluster FSID. Must be a UUID.
46   CephMonKey:
47     default: ''
48     description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
49     type: string
50     hidden: true
51   CephAdminKey:
52     default: ''
53     description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
54     type: string
55     hidden: true
56   CinderEnableNfsBackend:
57     default: false
58     description: Whether to enable or not the NFS backend for Cinder
59     type: boolean
60   CephClientKey:
61     default: ''
62     description: The Ceph client key. Can be created with ceph-authtool --gen-print-key. Currently only used for external Ceph deployments to create the openstack user keyring.
63     type: string
64     hidden: true
65   CephExternalMonHost:
66     default: ''
67     type: string
68     description: List of externally managed Ceph Mon Host IPs. Only used for external Ceph deployments.
69   CinderEnableIscsiBackend:
70     default: true
71     description: Whether to enable or not the Iscsi backend for Cinder
72     type: boolean
73   CinderEnableRbdBackend:
74     default: false
75     description: Whether to enable or not the Rbd backend for Cinder
76     type: boolean
77   CloudName:
78     default: overcloud
79     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
80     type: string
81   ControlFixedIPs:
82     default: []
83     description: Should be used for arbitrary ips.
84     type: json
85   CorosyncIPv6:
86     default: false
87     description: Enable IPv6 in Corosync
88     type: boolean
89   Debug:
90     default: ''
91     description: Set to True to enable debugging on all services.
92     type: string
93   HAProxySyslogAddress:
94     default: /dev/log
95     description: Syslog address where HAproxy will send its log
96     type: string
97   HorizonAllowedHosts:
98     default: '*'
99     description: A list of IP/Hostname allowed to connect to horizon
100     type: comma_delimited_list
101   ImageUpdatePolicy:
102     default: 'REBUILD_PRESERVE_EPHEMERAL'
103     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
104     type: string
105   InternalApiVirtualFixedIPs:
106     default: []
107     description: >
108         Control the IP allocation for the InternalApiVirtualInterface port. E.g.
109         [{'ip_address':'1.2.3.4'}]
110     type: json
111   KeyName:
112     default: default
113     description: Name of an existing Nova key pair to enable SSH access to the instances
114     type: string
115     constraints:
116       - custom_constraint: nova.keypair
117   MemcachedIPv6:
118     default: false
119     description: Enable IPv6 features in Memcached.
120     type: boolean
121   NeutronBridgeMappings:
122     description: >
123       The OVS logical->physical bridge mappings to use. See the Neutron
124       documentation for details. Defaults to mapping br-ex - the external
125       bridge on hosts - to a physical name 'datacentre' which can be used
126       to create provider networks (and we use this for the default floating
127       network) - if changing this either use different post-install network
128       scripts or be sure to keep 'datacentre' as a mapping network name.
129     type: comma_delimited_list
130     default: "datacentre:br-ex"
131   NeutronControlPlaneID:
132     default: 'ctlplane'
133     type: string
134     description: Neutron ID or name for ctlplane network.
135   NeutronEnableTunnelling:
136     type: string
137     default: "True"
138   NeutronEnableL2Pop:
139     type: string
140     description: >
141         Enable/disable the L2 population feature in the Neutron agents.
142     default: "False"
143   NeutronFlatNetworks:
144     type: comma_delimited_list
145     default: 'datacentre'
146     description: >
147       If set, flat networks to configure in neutron plugins. Defaults to
148       'datacentre' to permit external network creation.
149   NeutronNetworkType:
150     default: 'vxlan'
151     description: The tenant network type for Neutron.
152     type: comma_delimited_list
153   NeutronPassword:
154     description: The password for the neutron service account, used by neutron agents.
155     type: string
156     hidden: true
157   NeutronPublicInterface:
158     default: nic1
159     description: What interface to bridge onto br-ex for network nodes.
160     type: string
161   NeutronMetadataProxySharedSecret:
162     description: Shared secret to prevent spoofing
163     type: string
164     hidden: true
165   NeutronTenantMtu:
166     description: >
167       The default MTU for tenant networks. For VXLAN/GRE tunneling, this should
168       be at least 50 bytes smaller than the MTU on the physical network. This
169       value will be used to set the MTU on the virtual Ethernet device.
170       This value will be used to construct the NeutronDnsmasqOptions, since that
171       will determine the MTU that is assigned to the VM host through DHCP.
172     default: "1400"
173     type: string
174   NeutronTunnelTypes:
175     default: 'vxlan'
176     description: |
177         The tunnel types for the Neutron tenant network.
178     type: comma_delimited_list
179     type: comma_delimited_list
180   NeutronCorePlugin:
181     default: 'ml2'
182     description: |
183         The core plugin for Neutron. The value should be the entrypoint to be loaded
184         from neutron.core_plugins namespace.
185     type: string
186   NeutronServicePlugins:
187     default: "router,qos"
188     description: |
189         Comma-separated list of service plugin entrypoints to be loaded from the
190         neutron.service_plugins namespace.
191     type: comma_delimited_list
192   NeutronTypeDrivers:
193     default: "vxlan,vlan,flat,gre"
194     description: |
195         Comma-separated list of network type driver entrypoints to be loaded.
196     type: comma_delimited_list
197   NeutronMechanismDrivers:
198     default: 'openvswitch'
199     description: |
200         The mechanism drivers for the Neutron tenant network.
201     type: comma_delimited_list
202     type: comma_delimited_list
203   NeutronAgentExtensions:
204     default: "qos"
205     description: |
206         Comma-separated list of extensions enabled for the Neutron agents.
207     type: comma_delimited_list
208   NeutronAllowL3AgentFailover:
209     default: 'False'
210     description: Allow automatic l3-agent failover
211     type: string
212   NeutronL3HA:
213     default: 'False'
214     description: Whether to enable l3-agent HA
215     type: string
216   NovaIPv6:
217     default: false
218     description: Enable IPv6 features in Nova
219     type: boolean
220   NovaPassword:
221     description: The password for the nova service account, used by nova-api.
222     type: string
223     hidden: true
224   NtpServer:
225     default: ''
226     description: Comma-separated list of ntp servers
227     type: comma_delimited_list
228   MongoDbNoJournal:
229     default: false
230     description: Should MongoDb journaling be disabled
231     type: boolean
232   MongoDbIPv6:
233     default: false
234     description: Enable IPv6 if MongoDB VIP is IPv6
235     type: boolean
236   PublicVirtualFixedIPs:
237     default: []
238     description: >
239         Control the IP allocation for the PublicVirtualInterface port. E.g.
240         [{'ip_address':'1.2.3.4'}]
241     type: json
242   RabbitCookieSalt:
243     type: string
244     default: unset
245     description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
246   RabbitUserName:
247     default: guest
248     description: The username for RabbitMQ
249     type: string
250   RabbitPassword:
251     description: The password for RabbitMQ
252     type: string
253     hidden: true
254   RabbitClientUseSSL:
255     default: false
256     description: >
257         Rabbit client subscriber parameter to specify
258         an SSL connection to the RabbitMQ host.
259     type: string
260   RabbitClientPort:
261     default: 5672
262     description: Set rabbit subscriber port, change this if using SSL
263     type: number
264   RedisPassword:
265     description: The password for Redis
266     type: string
267     hidden: true
268   SnmpdReadonlyUserName:
269     default: ro_snmp_user
270     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
271     type: string
272   SnmpdReadonlyUserPassword:
273     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
274     type: string
275     hidden: true
276   StorageVirtualFixedIPs:
277     default: []
278     description: >
279         Control the IP allocation for the StorageVirtualInterface port. E.g.
280         [{'ip_address':'1.2.3.4'}]
281     type: json
282   StorageMgmtVirtualFixedIPs:
283     default: []
284     description: >
285         Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
286         [{'ip_address':'1.2.3.4'}]
287     type: json
288   TimeZone:
289     default: 'UTC'
290     description: The timezone to be set on nodes.
291     type: string
292   CloudDomain:
293     default: 'localdomain'
294     type: string
295     description: >
296       The DNS domain used for the hosts. This should match the dhcp_domain
297       configured in the Undercloud neutron. Defaults to localdomain.
298   ServerMetadata:
299     default: {}
300     description: >
301       Extra properties or metadata passed to Nova for the created nodes in
302       the overcloud. It's accessible via the Nova metadata API.
303     type: json
304
305   # Controller-specific params
306   CinderLVMLoopDeviceSize:
307     default: 10280
308     description: The size of the loopback file used by the cinder LVM driver.
309     type: number
310   CinderPassword:
311     description: The password for the cinder service account, used by cinder-api.
312     type: string
313     hidden: true
314   CinderISCSIHelper:
315     default: lioadm
316     description: The iSCSI helper to use with cinder.
317     type: string
318   ControllerCount:
319     type: number
320     default: 1
321     constraints:
322       - range: {min: 1}
323   controllerExtraConfig:
324     default: {}
325     description: |
326       Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
327     type: json
328   controllerImage:
329     type: string
330     default: overcloud-full
331     constraints:
332       - custom_constraint: glance.image
333   OvercloudControlFlavor:
334     description: Flavor for control nodes to request when deploying.
335     default: baremetal
336     type: string
337     constraints:
338       - custom_constraint: nova.flavor
339   ControlVirtualInterface:
340     default: 'br-ex'
341     description: Interface where virtual ip will be assigned.
342     type: string
343   EnableFencing:
344     default: false
345     description: Whether to enable fencing in Pacemaker or not.
346     type: boolean
347   EnableGalera:
348     default: true
349     description: Whether to use Galera instead of regular MariaDB.
350     type: boolean
351   ControllerEnableCephStorage:
352     default: false
353     description: Whether to deploy Ceph Storage (OSD) on the Controller
354     type: boolean
355   ControllerEnableSwiftStorage:
356     default: true
357     description: Whether to enable Swift Storage on the Controller
358     type: boolean
359   ControllerSchedulerHints:
360     type: json
361     description: Optional scheduler hints to pass to nova
362     default: {}
363   ExtraConfig:
364     default: {}
365     description: |
366       Additional configuration to inject into the cluster. The format required
367       may be implementation specific, e.g puppet hieradata.  Any role specific
368       ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
369     type: json
370   FencingConfig:
371     default: {}
372     description: |
373       Pacemaker fencing configuration. The JSON should have
374       the following structure:
375         {
376           "devices": [
377             {
378               "agent": "AGENT_NAME",
379               "host_mac": "HOST_MAC_ADDRESS",
380               "params": {"PARAM_NAME": "PARAM_VALUE"}
381             }
382           ]
383         }
384       For instance:
385         {
386           "devices": [
387             {
388               "agent": "fence_xvm",
389               "host_mac": "52:54:00:aa:bb:cc",
390               "params": {
391                 "multicast_address": "225.0.0.12",
392                 "port": "baremetal_0",
393                 "manage_fw": true,
394                 "manage_key_file": true,
395                 "key_file": "/etc/fence_xvm.key",
396                 "key_file_password": "abcdef"
397               }
398             }
399           ]
400         }
401     type: json
402   GnocchiBackend:
403     default: file
404     description: The short name of the Gnocchi backend to use. Should be one
405       of swift, rbd or file
406     type: string
407     constraints:
408     - allowed_values: ['swift', 'file', 'rbd']
409   GnocchiIndexerBackend:
410     default: 'mysql'
411     description: The short name of the Gnocchi indexer backend to use.
412     type: string
413   GnocchiPassword:
414     description: The password for the gnocchi service account.
415     type: string
416     hidden: true
417   InstanceNameTemplate:
418     default: 'instance-%08x'
419     description: Template string to be used to generate instance names
420     type: string
421   ManageFirewall:
422     default: false
423     description: Whether to manage IPtables rules.
424     type: boolean
425   PurgeFirewallRules:
426     default: false
427     description: Whether IPtables rules should be purged before setting up the ones.
428     type: boolean
429   MysqlInnodbBufferPoolSize:
430     description: >
431         Specifies the size of the buffer pool in megabytes. Setting to
432         zero should be interpreted as "no value" and will defer to the
433         lower level default.
434     type: number
435     default: 0
436   MysqlMaxConnections:
437     description: Configures MySQL max_connections config setting
438     type: number
439     default: 4096
440   PublicVirtualInterface:
441     default: 'br-ex'
442     description: >
443         Specifies the interface where the public-facing virtual ip will be assigned.
444         This should be int_public when a VLAN is being used.
445     type: string
446   SwiftHashSuffix:
447     description: A random string to be used as a salt when hashing to determine mappings in the ring.
448     type: string
449     hidden: true
450   SwiftMountCheck:
451     default: 'false'
452     description: Value of mount_check in Swift account/container/object -server.conf
453     type: boolean
454   SwiftMinPartHours:
455     type: number
456     default: 1
457     description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
458   SwiftPartPower:
459     default: 10
460     description: Partition Power to use when building Swift rings
461     type: number
462   SwiftReplicas:
463     type: number
464     default: 3
465     description: How many replicas to use in the swift rings.
466
467 # Compute-specific params
468   CeilometerComputeAgent:
469     description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
470     type: string
471     default: ''
472     constraints:
473     - allowed_values: ['', Present]
474   ComputeCount:
475     type: number
476     default: 1
477   HypervisorNeutronPhysicalBridge:
478     default: 'br-ex'
479     description: >
480       An OVS bridge to create on each hypervisor. This defaults to br-ex the
481       same as the control plane nodes, as we have a uniform configuration of
482       the openvswitch agent. Typically should not need to be changed.
483     type: string
484   HypervisorNeutronPublicInterface:
485     default: nic1
486     description: What interface to add to the HypervisorNeutronPhysicalBridge.
487     type: string
488   NeutronNetworkVLANRanges:
489     default: 'datacentre:1:1000'
490     description: >
491       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
492       Neutron documentation for permitted values. Defaults to permitting any
493       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
494     type: comma_delimited_list
495   NovaComputeDriver:
496     type: string
497     default: libvirt.LibvirtDriver
498   NovaComputeExtraConfig:
499     default: {}
500     description: |
501       NovaCompute specific configuration to inject into the cluster. Same
502       structure as ExtraConfig.
503     type: json
504   NovaComputeLibvirtType:
505     default: kvm
506     type: string
507   NovaComputeLibvirtVifDriver:
508     default: ''
509     description: Libvirt VIF driver configuration for the network
510     type: string
511   NovaComputeSchedulerHints:
512     type: json
513     description: Optional scheduler hints to pass to nova
514     default: {}
515   NovaEnableRbdBackend:
516     default: false
517     description: Whether to enable or not the Rbd backend for Nova
518     type: boolean
519   NovaImage:
520     type: string
521     default: overcloud-full
522     constraints:
523       - custom_constraint: glance.image
524   NovaOVSBridge:
525     default: 'br-int'
526     description: Name of integration bridge used by Open vSwitch
527     type: string
528   NovaSecurityGroupAPI:
529     default: 'neutron'
530     description: The full class name of the security API class
531     type: string
532   OvercloudComputeFlavor:
533     description: Use this flavor
534     default: baremetal
535     type: string
536     constraints:
537       - custom_constraint: nova.flavor
538   ServiceNetMap:
539     default:
540       NeutronTenantNetwork: tenant
541       CeilometerApiNetwork: internal_api
542       AodhApiNetwork: internal_api
543       GnocchiApiNetwork: internal_api
544       MongoDbNetwork: internal_api
545       CinderApiNetwork: internal_api
546       CinderIscsiNetwork: storage
547       GlanceApiNetwork: storage
548       GlanceRegistryNetwork: internal_api
549       KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
550       KeystonePublicApiNetwork: internal_api
551       NeutronApiNetwork: internal_api
552       HeatApiNetwork: internal_api
553       NovaApiNetwork: internal_api
554       NovaMetadataNetwork: internal_api
555       NovaVncProxyNetwork: internal_api
556       SwiftMgmtNetwork: storage_mgmt
557       SwiftProxyNetwork: storage
558       SaharaApiNetwork: internal_api
559       HorizonNetwork: internal_api
560       MemcachedNetwork: internal_api
561       RabbitMqNetwork: internal_api
562       RedisNetwork: internal_api
563       MysqlNetwork: internal_api
564       CephClusterNetwork: storage_mgmt
565       CephPublicNetwork: storage
566       ControllerHostnameResolveNetwork: internal_api
567       ComputeHostnameResolveNetwork: internal_api
568       BlockStorageHostnameResolveNetwork: internal_api
569       ObjectStorageHostnameResolveNetwork: internal_api
570       CephStorageHostnameResolveNetwork: storage
571     description: Mapping of service_name -> network name. Typically set
572                  via parameter_defaults in the resource registry.
573     type: json
574
575   ControllerServices:
576     default:
577       - OS::TripleO::Services::CinderApi
578       - OS::TripleO::Services::CinderScheduler
579       - OS::TripleO::Services::CinderVolume
580       - OS::TripleO::Services::Keystone
581       - OS::TripleO::Services::GlanceApi
582       - OS::TripleO::Services::GlanceRegistry
583       - OS::TripleO::Services::HeatApi
584       - OS::TripleO::Services::HeatApiCfn
585       - OS::TripleO::Services::HeatApiCloudwatch
586       - OS::TripleO::Services::HeatEngine
587       - OS::TripleO::Services::NeutronDhcpAgent
588       - OS::TripleO::Services::NeutronL3Agent
589       - OS::TripleO::Services::NeutronMetadataAgent
590       - OS::TripleO::Services::NeutronServer
591       - OS::TripleO::Services::NeutronCorePlugin
592       - OS::TripleO::Services::NeutronOvsAgent
593       - OS::TripleO::Services::RabbitMQ
594       - OS::TripleO::Services::HAproxy
595       - OS::TripleO::Services::Keepalived
596       - OS::TripleO::Services::Memcached
597       - OS::TripleO::Services::SwiftProxy
598       - OS::TripleO::Services::Redis
599       - OS::TripleO::Services::NovaConductor
600     description: A list of service resources (configured in the Heat
601                  resource_registry) which represent nested stacks
602                  for each service that should get installed on the Controllers.
603     type: comma_delimited_list
604
605   ComputeServices:
606     default: []
607     description: A list of service resources (configured in the Heat
608                  resource_registry) which represent nested stacks
609                  for each service that should get installed on the Compute Nodes.
610     type: comma_delimited_list
611
612 # Block storage specific parameters
613   BlockStorageCount:
614     type: number
615     default: 0
616   BlockStorageImage:
617     default: overcloud-full
618     type: string
619   OvercloudBlockStorageFlavor:
620     description: Flavor for block storage nodes to request when deploying.
621     default: baremetal
622     type: string
623     constraints:
624       - custom_constraint: nova.flavor
625   BlockStorageExtraConfig:
626     default: {}
627     description: |
628       BlockStorage specific configuration to inject into the cluster. Same
629       structure as ExtraConfig.
630     type: json
631   BlockStorageSchedulerHints:
632     type: json
633     description: Optional scheduler hints to pass to nova
634     default: {}
635
636
637 # Object storage specific parameters
638   ObjectStorageCount:
639     type: number
640     default: 0
641   OvercloudSwiftStorageFlavor:
642     description: Flavor for Swift storage nodes to request when deploying.
643     default: baremetal
644     type: string
645     constraints:
646       - custom_constraint: nova.flavor
647   SwiftStorageImage:
648     default: overcloud-full
649     type: string
650   ObjectStorageExtraConfig:
651     default: {}
652     description: |
653       ObjectStorage specific configuration to inject into the cluster. Same
654       structure as ExtraConfig.
655     type: json
656   ObjectStorageSchedulerHints:
657     type: json
658     description: Optional scheduler hints to pass to nova
659     default: {}
660   ObjectStorageServices:
661     default: []
662     description: A list of service resources (configured in the Heat
663                  resource_registry) which represent nested stacks
664                  for each service that should get installed on the ObjectStorage nodes.
665                  Note this role currently only supports steps 2, 3 and 4 configuration.
666     type: comma_delimited_list
667
668
669 # Ceph storage specific parameters
670   CephStorageCount:
671     type: number
672     default: 0
673   CephStorageImage:
674     default: overcloud-full
675     type: string
676   OvercloudCephStorageFlavor:
677     default: baremetal
678     description: Flavor for Ceph storage nodes to request when deploying.
679     type: string
680     constraints:
681       - custom_constraint: nova.flavor
682   CephStorageExtraConfig:
683     default: {}
684     description: |
685       CephStorage specific configuration to inject into the cluster. Same
686       structure as ExtraConfig.
687     type: json
688   CephStorageSchedulerHints:
689     type: json
690     description: Optional scheduler hints to pass to nova
691     default: {}
692   CephStorageServices:
693     default: []
694     description: A list of service resources (configured in the Heat
695                  resource_registry) which represent nested stacks
696                  for each service that should get installed on the CephStorage nodes.
697     type: comma_delimited_list
698
699   # Hostname format for each role
700   # Note %index% is translated into the index of the node, e.g 0/1/2 etc
701   # and %stackname% is replaced with OS::stack_name in the template below.
702   # If you want to use the heat generated names, pass '' (empty string).
703   ControllerHostnameFormat:
704     type: string
705     description: Format for Controller node hostnames
706     default: '%stackname%-controller-%index%'
707   ComputeHostnameFormat:
708     type: string
709     description: Format for Compute node hostnames
710     default: '%stackname%-novacompute-%index%'
711   BlockStorageHostnameFormat:
712     type: string
713     description: Format for BlockStorage node hostnames
714     default: '%stackname%-blockstorage-%index%'
715   ObjectStorageHostnameFormat:
716     type: string
717     description: Format for SwiftStorage node hostnames
718     default: '%stackname%-objectstorage-%index%'
719   CephStorageHostnameFormat:
720     type: string
721     description: Format for CephStorage node hostnames
722     default: '%stackname%-cephstorage-%index%'
723
724   # Identifiers to trigger tasks on nodes
725   UpdateIdentifier:
726     default: ''
727     type: string
728     description: >
729       Setting to a previously unused value during stack-update will trigger
730       package update on all nodes
731   DeployIdentifier:
732     default: ''
733     type: string
734     description: >
735       Setting this to a unique value will re-run any deployment tasks which
736       perform configuration on a Heat stack-update.
737
738   # If you want to remove a specific node from a resource group, you can pass
739   # the node name or id as a <Group>RemovalPolicies parameter, for example:
740   # ComputeRemovalPolicies: [{'resource_list': ['0']}]
741   ControllerRemovalPolicies:
742     default: []
743     type: json
744     description: >
745       List of resources to be removed from ControllerResourceGroup when
746       doing an update which requires removal of specific resources.
747   ComputeRemovalPolicies:
748     default: []
749     type: json
750     description: >
751       List of resources to be removed from ComputeResourceGroup when
752       doing an update which requires removal of specific resources.
753   BlockStorageRemovalPolicies:
754     default: []
755     type: json
756     description: >
757       List of resources to be removed from BlockStorageResourceGroup when
758       doing an update which requires removal of specific resources.
759   ObjectStorageRemovalPolicies:
760     default: []
761     type: json
762     description: >
763       List of resources to be removed from ObjectStorageResourceGroup when
764       doing an update which requires removal of specific resources.
765   CephStorageRemovalPolicies:
766     default: []
767     type: json
768     description: >
769       List of resources to be removed from CephStorageResourceGroup when
770       doing an update which requires removal of specific resources.
771
772 parameter_groups:
773 - label: deprecated
774   description: Do not use deprecated params, they will be removed.
775   parameters:
776   - controllerExtraConfig
777
778
779 resources:
780
781   HeatAuthEncryptionKey:
782     type: OS::Heat::RandomString
783
784   PcsdPassword:
785     type: OS::Heat::RandomString
786     properties:
787       length: 16
788
789   HorizonSecret:
790     type: OS::Heat::RandomString
791     properties:
792       length: 10
793
794   EndpointMap:
795     type: OS::TripleO::EndpointMap
796     properties:
797       CloudName: {get_param: CloudName}
798       CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
799       AodhApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
800       CinderApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
801       GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
802       GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
803       GnocchiApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
804       HeatApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
805       KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
806       KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
807       MysqlVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
808       NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
809       NovaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
810       SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
811       SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
812       PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
813
814   ControllerServiceChain:
815     type: OS::TripleO::Services
816     depends_on: Networks
817     properties:
818       Services: {get_param: ControllerServices}
819       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
820
821   Controller:
822     type: OS::Heat::ResourceGroup
823     depends_on: Networks
824     properties:
825       count: {get_param: ControllerCount}
826       removal_policies: {get_param: ControllerRemovalPolicies}
827       resource_def:
828         type: OS::TripleO::Controller
829         properties:
830           AdminPassword: {get_param: AdminPassword}
831           AodhPassword: {get_param: AodhPassword}
832           CeilometerBackend: {get_param: CeilometerBackend}
833           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
834           CeilometerPassword: {get_param: CeilometerPassword}
835           CeilometerMeterDispatcher: {get_param: CeilometerMeterDispatcher}
836           CloudDomain: {get_param: CloudDomain}
837           ControlVirtualInterface: {get_param: ControlVirtualInterface}
838           controllerExtraConfig: {get_param: controllerExtraConfig}
839           CorosyncIPv6: {get_param: CorosyncIPv6}
840           Debug: {get_param: Debug}
841           EnableFencing: {get_param: EnableFencing}
842           ManageFirewall: {get_param: ManageFirewall}
843           PurgeFirewallRules: {get_param: PurgeFirewallRules}
844           EnableGalera: {get_param: EnableGalera}
845           EnableCephStorage: {get_param: ControllerEnableCephStorage}
846           EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
847           ExtraConfig: {get_param: ExtraConfig}
848           FencingConfig: {get_param: FencingConfig}
849           Flavor: {get_param: OvercloudControlFlavor}
850           GnocchiPassword: {get_param: GnocchiPassword}
851           GnocchiBackend: {get_param: GnocchiBackend}
852           GnocchiIndexerBackend: {get_param: GnocchiIndexerBackend}
853           HAProxySyslogAddress: {get_param: HAProxySyslogAddress}
854           HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
855           HorizonAllowedHosts: {get_param: HorizonAllowedHosts}
856           HorizonSecret: {get_resource: HorizonSecret}
857           Image: {get_param: controllerImage}
858           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
859           InstanceNameTemplate: {get_param: InstanceNameTemplate}
860           KeyName: {get_param: KeyName}
861           MemcachedIPv6: {get_param: MemcachedIPv6}
862           MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
863           MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
864           MysqlMaxConnections: {get_param: MysqlMaxConnections}
865           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
866           NeutronTenantMtu: {get_param: NeutronTenantMtu}
867           NeutronPublicInterface: {get_param: NeutronPublicInterface}
868           NeutronPassword: {get_param: NeutronPassword}
869           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
870           NeutronCorePlugin: {get_param: NeutronCorePlugin}
871           NeutronServicePlugins: {get_param: NeutronServicePlugins}
872           NovaIPv6: {get_param: NovaIPv6}
873           NovaPassword: {get_param: NovaPassword}
874           NtpServer: {get_param: NtpServer}
875           MongoDbNoJournal: {get_param: MongoDbNoJournal}
876           MongoDbIPv6: {get_param: MongoDbIPv6}
877           PcsdPassword: {get_resource: PcsdPassword}
878           PublicVirtualInterface: {get_param: PublicVirtualInterface}
879           RabbitPassword: {get_param: RabbitPassword}
880           RabbitUserName: {get_param: RabbitUserName}
881           RabbitCookie: {get_attr: [RabbitCookie, value]}
882           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
883           RabbitClientPort: {get_param: RabbitClientPort}
884           RedisPassword: {get_param: RedisPassword}
885           SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
886           SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
887           RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
888           RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
889           SwiftHashSuffix: {get_param: SwiftHashSuffix}
890           SwiftMountCheck: {get_param: SwiftMountCheck}
891           SwiftMinPartHours: {get_param: SwiftMinPartHours}
892           SwiftPartPower: {get_param: SwiftPartPower}
893           SwiftReplicas: { get_param: SwiftReplicas}
894           TimeZone: {get_param: TimeZone}
895           VirtualIP: {get_attr: [VipMap, net_ip_map, ctlplane]} # deprecated. Use per service VIP settings instead now.
896           PublicVirtualIP: {get_attr: [VipMap, net_ip_map, external]}
897           ServiceNetMap: {get_param: ServiceNetMap}
898           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
899           CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
900           AodhApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
901           GnocchiApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
902           CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
903           HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
904           HeatApiVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
905           NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
906           SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
907           MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
908           NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
909           NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
910           SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
911           UpdateIdentifier: {get_param: UpdateIdentifier}
912           Hostname:
913             str_replace:
914               template: {get_param: ControllerHostnameFormat}
915               params:
916                 '%stackname%': {get_param: 'OS::stack_name'}
917           NodeIndex: '%index%'
918           ServerMetadata: {get_param: ServerMetadata}
919           SchedulerHints: {get_param: ControllerSchedulerHints}
920           ServiceConfigSettings: {get_attr: [ControllerServiceChain, config_settings]}
921
922   ComputeServiceChain:
923     type: OS::TripleO::Services
924     properties:
925       Services: {get_param: ComputeServices}
926       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
927
928   Compute:
929     type: OS::Heat::ResourceGroup
930     depends_on: Networks
931     properties:
932       count: {get_param: ComputeCount}
933       removal_policies: {get_param: ComputeRemovalPolicies}
934       resource_def:
935         type: OS::TripleO::Compute
936         properties:
937           AdminPassword: {get_param: AdminPassword}
938           CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
939           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
940           CeilometerPassword: {get_param: CeilometerPassword}
941           CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
942           CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
943           Debug: {get_param: Debug}
944           ExtraConfig: {get_param: ExtraConfig}
945           Flavor: {get_param: OvercloudComputeFlavor}
946           GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
947           Image: {get_param: NovaImage}
948           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
949           KeyName: {get_param: KeyName}
950           KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
951           KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
952           NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
953           NeutronTenantMtu: {get_param: NeutronTenantMtu}
954           NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
955           NeutronEnableL2Pop : {get_param: NeutronEnableL2Pop}
956           NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
957           NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
958           NeutronNetworkType: {get_param: NeutronNetworkType}
959           NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
960           NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
961           NeutronPassword: {get_param: NeutronPassword}
962           NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
963           NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
964           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
965           NeutronCorePlugin: {get_param: NeutronCorePlugin}
966           NeutronServicePlugins: {get_param: NeutronServicePlugins}
967           NeutronTypeDrivers: {get_param: NeutronTypeDrivers}
968           NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
969           NeutronAgentExtensions: {get_param: NeutronAgentExtensions}
970           # L3 HA and Failover is not relevant for Computes, should be removed
971           NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
972           NeutronL3HA: {get_param: NeutronL3HA}
973           NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
974           NovaComputeDriver: {get_param: NovaComputeDriver}
975           NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
976           NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
977           NovaComputeLibvirtVifDriver: {get_param: NovaComputeLibvirtVifDriver}
978           NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
979           NovaIPv6: {get_param: NovaIPv6}
980           NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
981           NovaPassword: {get_param: NovaPassword}
982           NovaOVSBridge: {get_param: NovaOVSBridge}
983           NovaSecurityGroupAPI: {get_param: NovaSecurityGroupAPI}
984           NtpServer: {get_param: NtpServer}
985           RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
986           RabbitPassword: {get_param: RabbitPassword}
987           RabbitUserName: {get_param: RabbitUserName}
988           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
989           RabbitClientPort: {get_param: RabbitClientPort}
990           SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
991           SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
992           ServiceNetMap: {get_param: ServiceNetMap}
993           TimeZone: {get_param: TimeZone}
994           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
995           UpdateIdentifier: {get_param: UpdateIdentifier}
996           Hostname:
997             str_replace:
998               template: {get_param: ComputeHostnameFormat}
999               params:
1000                 '%stackname%': {get_param: 'OS::stack_name'}
1001           CloudDomain: {get_param: CloudDomain}
1002           ServerMetadata: {get_param: ServerMetadata}
1003           SchedulerHints: {get_param: NovaComputeSchedulerHints}
1004           NodeIndex: '%index%'
1005           ServiceConfigSettings: {get_attr: [ComputeServiceChain, config_settings]}
1006
1007
1008   BlockStorage:
1009     type: OS::Heat::ResourceGroup
1010     depends_on: Networks
1011     properties:
1012       count: {get_param: BlockStorageCount}
1013       removal_policies: {get_param: BlockStorageRemovalPolicies}
1014       resource_def:
1015         type: OS::TripleO::BlockStorage
1016         properties:
1017           Debug: {get_param: Debug}
1018           Image: {get_param: BlockStorageImage}
1019           CinderISCSIHelper: {get_param: CinderISCSIHelper}
1020           CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
1021           # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
1022           CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
1023           CinderPassword: {get_param: CinderPassword}
1024           KeyName: {get_param: KeyName}
1025           Flavor: {get_param: OvercloudBlockStorageFlavor}
1026           VirtualIP: {get_attr: [VipMap, net_ip_map, ctlplane]}
1027           GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1028           RabbitPassword: {get_param: RabbitPassword}
1029           RabbitUserName: {get_param: RabbitUserName}
1030           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
1031           RabbitClientPort: {get_param: RabbitClientPort}
1032           TimeZone: {get_param: TimeZone}
1033           NtpServer: {get_param: NtpServer}
1034           UpdateIdentifier: {get_param: UpdateIdentifier}
1035           Hostname:
1036             str_replace:
1037               template: {get_param: BlockStorageHostnameFormat}
1038               params:
1039                 '%stackname%': {get_param: 'OS::stack_name'}
1040           ServiceNetMap: {get_param: ServiceNetMap}
1041           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
1042           ExtraConfig: {get_param: ExtraConfig}
1043           BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
1044           CloudDomain: {get_param: CloudDomain}
1045           ServerMetadata: {get_param: ServerMetadata}
1046           SchedulerHints: {get_param: BlockStorageSchedulerHints}
1047           NodeIndex: '%index%'
1048
1049   ObjectStorageServiceChain:
1050     type: OS::TripleO::Services
1051     properties:
1052       Services: {get_param: ObjectStorageServices}
1053       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
1054
1055   ObjectStorage:
1056     type: OS::Heat::ResourceGroup
1057     depends_on: Networks
1058     properties:
1059       count: {get_param: ObjectStorageCount}
1060       removal_policies: {get_param: ObjectStorageRemovalPolicies}
1061       resource_def:
1062         type: OS::TripleO::ObjectStorage
1063         properties:
1064           KeyName: {get_param: KeyName}
1065           Flavor: {get_param: OvercloudSwiftStorageFlavor}
1066           HashSuffix: {get_param: SwiftHashSuffix}
1067           MountCheck: {get_param: SwiftMountCheck}
1068           MinPartHours: {get_param: SwiftMinPartHours}
1069           PartPower: {get_param: SwiftPartPower}
1070           Image: {get_param: SwiftStorageImage}
1071           Replicas: { get_param: SwiftReplicas}
1072           TimeZone: {get_param: TimeZone}
1073           NtpServer: {get_param: NtpServer}
1074           UpdateIdentifier: {get_param: UpdateIdentifier}
1075           ServiceNetMap: {get_param: ServiceNetMap}
1076           Hostname:
1077             str_replace:
1078               template: {get_param: ObjectStorageHostnameFormat}
1079               params:
1080                 '%stackname%': {get_param: 'OS::stack_name'}
1081           ExtraConfig: {get_param: ExtraConfig}
1082           ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
1083           CloudDomain: {get_param: CloudDomain}
1084           ServerMetadata: {get_param: ServerMetadata}
1085           SchedulerHints: {get_param: ObjectStorageSchedulerHints}
1086           NodeIndex: '%index%'
1087           ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, config_settings]}
1088
1089   CephStorageServiceChain:
1090     type: OS::TripleO::Services
1091     properties:
1092       Services: {get_param: CephStorageServices}
1093       EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
1094
1095   CephStorage:
1096     type: OS::Heat::ResourceGroup
1097     depends_on: Networks
1098     properties:
1099       count: {get_param: CephStorageCount}
1100       removal_policies: {get_param: CephStorageRemovalPolicies}
1101       resource_def:
1102         type: OS::TripleO::CephStorage
1103         properties:
1104           Image: {get_param: CephStorageImage}
1105           KeyName: {get_param: KeyName}
1106           Flavor: {get_param: OvercloudCephStorageFlavor}
1107           NtpServer: {get_param: NtpServer}
1108           ServiceNetMap: {get_param: ServiceNetMap}
1109           TimeZone: {get_param: TimeZone}
1110           UpdateIdentifier: {get_param: UpdateIdentifier}
1111           Hostname:
1112             str_replace:
1113               template: {get_param: CephStorageHostnameFormat}
1114               params:
1115                 '%stackname%': {get_param: 'OS::stack_name'}
1116           ExtraConfig: {get_param: ExtraConfig}
1117           CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
1118           CloudDomain: {get_param: CloudDomain}
1119           ServerMetadata: {get_param: ServerMetadata}
1120           SchedulerHints: {get_param: CephStorageSchedulerHints}
1121           NodeIndex: '%index%'
1122           ServiceConfigSettings: {get_attr: [CephStorageServiceChain, config_settings]}
1123
1124   ControllerIpListMap:
1125     type: OS::TripleO::Network::Ports::NetIpListMap
1126     properties:
1127       ControlPlaneIpList: {get_attr: [Controller, ip_address]}
1128       ExternalIpList: {get_attr: [Controller, external_ip_address]}
1129       InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
1130       StorageIpList: {get_attr: [Controller, storage_ip_address]}
1131       StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
1132       TenantIpList: {get_attr: [Controller, tenant_ip_address]}
1133       ManagementIpList: {get_attr: [Controller, management_ip_address]}
1134
1135   allNodesConfig:
1136     type: OS::TripleO::AllNodes::SoftwareConfig
1137     properties:
1138       compute_hosts: {get_attr: [Compute, hosts_entry]}
1139       controller_hosts: {get_attr: [Controller, hosts_entry]}
1140       controller_ips: {get_attr: [Controller, ip_address]}
1141       block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
1142       object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
1143       ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
1144       controller_names: {get_attr: [Controller, hostname]}
1145       rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1146       mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
1147       redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
1148       memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
1149       mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1150       horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1151       heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1152       swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1153       ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1154       aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1155       gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1156       nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1157       nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1158       glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1159       glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1160       cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1161       neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1162       keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1163       keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1164       sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1165       DeployIdentifier: {get_param: DeployIdentifier}
1166       UpdateIdentifier: {get_param: UpdateIdentifier}
1167
1168   MysqlRootPassword:
1169     type: OS::Heat::RandomString
1170     properties:
1171       length: 10
1172
1173   MysqlClusterUniquePart:
1174     type: OS::Heat::RandomString
1175     properties:
1176       length: 10
1177
1178   RabbitCookie:
1179     type: OS::Heat::RandomString
1180     properties:
1181       length: 20
1182       salt: {get_param: RabbitCookieSalt}
1183
1184   # creates the network architecture
1185   Networks:
1186     type: OS::TripleO::Network
1187
1188   ControlVirtualIP:
1189     type: OS::Neutron::Port
1190     depends_on: Networks
1191     properties:
1192       name: control_virtual_ip
1193       network: {get_param: NeutronControlPlaneID}
1194       fixed_ips: {get_param: ControlFixedIPs}
1195       replacement_policy: AUTO
1196
1197   RedisVirtualIP:
1198     depends_on: Networks
1199     type: OS::TripleO::Network::Ports::RedisVipPort
1200     properties:
1201       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1202       ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1203       PortName: redis_virtual_ip
1204       NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
1205       ServiceName: redis
1206
1207   # The public VIP is on the External net, falls back to ctlplane
1208   PublicVirtualIP:
1209     depends_on: Networks
1210     type: OS::TripleO::Network::Ports::ExternalVipPort
1211     properties:
1212       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1213       ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
1214       PortName: public_virtual_ip
1215       FixedIPs: {get_param: PublicVirtualFixedIPs}
1216
1217   InternalApiVirtualIP:
1218     depends_on: Networks
1219     type: OS::TripleO::Network::Ports::InternalApiVipPort
1220     properties:
1221       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1222       PortName: internal_api_virtual_ip
1223       FixedIPs: {get_param: InternalApiVirtualFixedIPs}
1224
1225   StorageVirtualIP:
1226     depends_on: Networks
1227     type: OS::TripleO::Network::Ports::StorageVipPort
1228     properties:
1229       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1230       PortName: storage_virtual_ip
1231       FixedIPs: {get_param: StorageVirtualFixedIPs}
1232
1233   StorageMgmtVirtualIP:
1234     depends_on: Networks
1235     type: OS::TripleO::Network::Ports::StorageMgmtVipPort
1236     properties:
1237       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1238       PortName: storage_management_virtual_ip
1239       FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
1240
1241   VipMap:
1242     type: OS::TripleO::Network::Ports::NetVipMap
1243     properties:
1244       ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
1245       ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
1246       ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
1247       InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
1248       InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
1249       StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
1250       StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
1251       StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
1252       StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
1253       # No tenant or management VIP required
1254
1255   VipConfig:
1256     type: OS::TripleO::VipConfig
1257
1258   VipDeployment:
1259     type: OS::Heat::StructuredDeployments
1260     properties:
1261       name: VipDeployment
1262       config: {get_resource: VipConfig}
1263       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1264       input_values:
1265         # service VIP mappings
1266         keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1267         keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1268         neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1269         cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1270         glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1271         glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
1272         swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1273         nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1274         nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
1275         ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1276         aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1277         gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1278         heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1279         horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
1280         redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
1281         mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
1282         rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
1283         # direct configuration of Virtual IPs for each network
1284         control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
1285         public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
1286         internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
1287         sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1288         storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
1289         storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
1290
1291   ControllerBootstrapNodeConfig:
1292     type: OS::TripleO::BootstrapNode::SoftwareConfig
1293     properties:
1294       bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
1295       bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
1296
1297   ControllerBootstrapNodeDeployment:
1298     type: OS::Heat::StructuredDeployments
1299     properties:
1300       name: ControllerBootstrapNodeDeployment
1301       config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
1302       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1303
1304   ControllerSwiftDeployment:
1305     type: OS::Heat::StructuredDeployments
1306     properties:
1307       name: ControllerSwiftDeployment
1308       config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1309       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1310
1311   ObjectStorageSwiftDeployment:
1312     type: OS::Heat::StructuredDeployments
1313     properties:
1314       name: ObjectStorageSwiftDeployment
1315       config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
1316       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1317
1318   SwiftDevicesAndProxyConfig:
1319     type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
1320     properties:
1321       controller_swift_devices: {get_attr: [Controller, swift_device]}
1322       object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
1323       controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
1324
1325   ComputeCephDeployment:
1326     type: OS::Heat::StructuredDeployments
1327     properties:
1328       name: ComputeCephDeployment
1329       config: {get_attr: [CephClusterConfig, config_id]}
1330       servers: {get_attr: [Compute, attributes, nova_server_resource]}
1331
1332   ControllerCephDeployment:
1333     type: OS::Heat::StructuredDeployments
1334     properties:
1335       name: ControllerCephDeployment
1336       config: {get_attr: [CephClusterConfig, config_id]}
1337       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1338
1339   CephStorageCephDeployment:
1340     type: OS::Heat::StructuredDeployments
1341     properties:
1342       name: CephStorageCephDeployment
1343       config: {get_attr: [CephClusterConfig, config_id]}
1344       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1345
1346   CephClusterConfig:
1347     type: OS::TripleO::CephClusterConfig::SoftwareConfig
1348     properties:
1349       ceph_storage_count: {get_param: CephStorageCount}
1350       ceph_fsid: {get_param: CephClusterFSID}
1351       ceph_mon_key: {get_param: CephMonKey}
1352       ceph_admin_key: {get_param: CephAdminKey}
1353       ceph_client_key: {get_param: CephClientKey}
1354       ceph_external_mon_ips: {get_param: CephExternalMonHost}
1355       ceph_mon_names: {get_attr: [Controller, hostname]}
1356       ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
1357
1358   ControllerAllNodesDeployment:
1359     type: OS::Heat::StructuredDeployments
1360     properties:
1361       name: ControllerAllNodesDeployment
1362       config: {get_attr: [allNodesConfig, config_id]}
1363       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1364
1365   ComputeAllNodesDeployment:
1366     type: OS::Heat::StructuredDeployments
1367     properties:
1368       name: ComputeAllNodesDeployment
1369       config: {get_attr: [allNodesConfig, config_id]}
1370       servers: {get_attr: [Compute, attributes, nova_server_resource]}
1371
1372   BlockStorageAllNodesDeployment:
1373     type: OS::Heat::StructuredDeployments
1374     properties:
1375       name: BlockStorageAllNodesDeployment
1376       config: {get_attr: [allNodesConfig, config_id]}
1377       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1378
1379   ObjectStorageAllNodesDeployment:
1380     type: OS::Heat::StructuredDeployments
1381     properties:
1382       name: ObjectStorageAllNodesDeployment
1383       config: {get_attr: [allNodesConfig, config_id]}
1384       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1385
1386   CephStorageAllNodesDeployment:
1387     type: OS::Heat::StructuredDeployments
1388     properties:
1389       name: CephStorageAllNodesDeployment
1390       config: {get_attr: [allNodesConfig, config_id]}
1391       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1392
1393   # All Nodes Validations
1394   AllNodesValidationConfig:
1395     type: OS::TripleO::AllNodes::Validation
1396     properties:
1397       PingTestIps:
1398         list_join:
1399         - ' '
1400         - - {get_attr: [Controller, resource.0.external_ip_address]}
1401           - {get_attr: [Controller, resource.0.internal_api_ip_address]}
1402           - {get_attr: [Controller, resource.0.storage_ip_address]}
1403           - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
1404           - {get_attr: [Controller, resource.0.tenant_ip_address]}
1405
1406   ControllerAllNodesValidationDeployment:
1407     type: OS::Heat::StructuredDeployments
1408     depends_on: ControllerAllNodesDeployment
1409     properties:
1410       name: ControllerAllNodesValidationDeployment
1411       config: {get_resource: AllNodesValidationConfig}
1412       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1413
1414   ComputeAllNodesValidationDeployment:
1415     type: OS::Heat::StructuredDeployments
1416     depends_on: ComputeAllNodesDeployment
1417     properties:
1418       name: ComputeAllNodesValidationDeployment
1419       config: {get_resource: AllNodesValidationConfig}
1420       servers: {get_attr: [Compute, attributes, nova_server_resource]}
1421
1422   BlockStorageAllNodesValidationDeployment:
1423     type: OS::Heat::StructuredDeployments
1424     depends_on: BlockStorageAllNodesDeployment
1425     properties:
1426       name: BlockStorageAllNodesValidationDeployment
1427       config: {get_resource: AllNodesValidationConfig}
1428       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1429
1430   ObjectStorageAllNodesValidationDeployment:
1431     type: OS::Heat::StructuredDeployments
1432     depends_on: ObjectStorageAllNodesDeployment
1433     properties:
1434       name: ObjectStorageAllNodesValidationDeployment
1435       config: {get_resource: AllNodesValidationConfig}
1436       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1437
1438   CephStorageAllNodesValidationDeployment:
1439     type: OS::Heat::StructuredDeployments
1440     depends_on: CephStorageAllNodesDeployment
1441     properties:
1442       name: CephStorageAllNodesValidationDeployment
1443       config: {get_resource: AllNodesValidationConfig}
1444       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1445
1446   UpdateWorkflow:
1447     type: OS::TripleO::Tasks::UpdateWorkflow
1448     properties:
1449       controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
1450       compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
1451       blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1452       objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1453       cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1454       input_values:
1455         deploy_identifier: {get_param: DeployIdentifier}
1456         update_identifier: {get_param: UpdateIdentifier}
1457
1458   # Optional ExtraConfig for all nodes - all roles are passed in here, but
1459   # the nested template may configure each role differently (or not at all)
1460   AllNodesExtraConfig:
1461     type: OS::TripleO::AllNodesExtraConfig
1462     depends_on:
1463       - UpdateWorkflow
1464       - ComputeAllNodesValidationDeployment
1465       - BlockStorageAllNodesValidationDeployment
1466       - ObjectStorageAllNodesValidationDeployment
1467       - CephStorageAllNodesValidationDeployment
1468       - ControllerAllNodesValidationDeployment
1469     properties:
1470       controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
1471       compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
1472       blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1473       objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1474       cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1475
1476   # Nested stack deployment runs after all other controller deployments
1477   ControllerNodesPostDeployment:
1478     type: OS::TripleO::ControllerPostDeployment
1479     depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
1480     properties:
1481       servers: {get_attr: [Controller, attributes, nova_server_resource]}
1482       NodeConfigIdentifiers:
1483         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
1484         controller_config: {get_attr: [Controller, attributes, config_identifier]}
1485         deployment_identifier: {get_param: DeployIdentifier}
1486       StepConfig: {get_attr: [ControllerServiceChain, step_config]}
1487
1488   ComputeNodesPostDeployment:
1489     type: OS::TripleO::ComputePostDeployment
1490     depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
1491     properties:
1492       servers: {get_attr: [Compute, attributes, nova_server_resource]}
1493       NodeConfigIdentifiers:
1494         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
1495         compute_config: {get_attr: [Compute, attributes, config_identifier]}
1496         deployment_identifier: {get_param: DeployIdentifier}
1497       StepConfig: {get_attr: [ComputeServiceChain, step_config]}
1498
1499   ObjectStorageNodesPostDeployment:
1500     type: OS::TripleO::ObjectStoragePostDeployment
1501     depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
1502     properties:
1503       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
1504       NodeConfigIdentifiers:
1505         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
1506         objectstorage_config: {get_attr: [ObjectStorage, attributes, config_identifier]}
1507         deployment_identifier: {get_param: DeployIdentifier}
1508       StepConfig: {get_attr: [ObjectStorageServiceChain, step_config]}
1509
1510   BlockStorageNodesPostDeployment:
1511     type: OS::TripleO::BlockStoragePostDeployment
1512     depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
1513     properties:
1514       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
1515       NodeConfigIdentifiers:
1516         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
1517         blockstorage_config: {get_attr: [BlockStorage, attributes, config_identifier]}
1518         deployment_identifier: {get_param: DeployIdentifier}
1519
1520   CephStorageNodesPostDeployment:
1521     type: OS::TripleO::CephStoragePostDeployment
1522     depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
1523     properties:
1524       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
1525       NodeConfigIdentifiers:
1526         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
1527         cephstorage_config: {get_attr: [CephStorage, attributes, config_identifier]}
1528         deployment_identifier: {get_param: DeployIdentifier}
1529       StepConfig: {get_attr: [CephStorageServiceChain, step_config]}
1530
1531 outputs:
1532   KeystoneURL:
1533     description: URL for the Overcloud Keystone service
1534     value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
1535   KeystoneAdminVip:
1536     description: Keystone Admin VIP endpoint
1537     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
1538   PublicVip:
1539     description: Controller VIP for public API endpoints
1540     value: {get_attr: [VipMap, net_ip_map, external]}
1541   AodhInternalVip:
1542     description: VIP for Aodh API internal endpoint
1543     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
1544   CeilometerInternalVip:
1545     description: VIP for Ceilometer API internal endpoint
1546     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
1547   CinderInternalVip:
1548     description: VIP for Cinder API internal endpoint
1549     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
1550   GlanceInternalVip:
1551     description: VIP for Glance API internal endpoint
1552     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
1553   GnocchiInternalVip:
1554     description: VIP for Gnocchi API internal endpoint
1555     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
1556   HeatInternalVip:
1557     description: VIP for Heat API internal endpoint
1558     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
1559   KeystoneInternalVip:
1560     description: VIP for Keystone API internal endpoint
1561     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
1562   NeutronInternalVip:
1563     description: VIP for Neutron API internal endpoint
1564     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
1565   NovaInternalVip:
1566     description: VIP for Nova API internal endpoint
1567     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
1568   SaharaInternalVip:
1569     description: VIP for Sahara API internal endpoint
1570     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
1571   SwiftInternalVip:
1572     description: VIP for Swift Proxy internal endpoint
1573     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
1574   EndpointMap:
1575     description: |
1576       Mapping of the resources with the needed info for their endpoints.
1577       This includes the protocol used, the IP, port and also a full
1578       representation of the URI.
1579     value: {get_attr: [EndpointMap, endpoint_map]}
1580   HostsEntry:
1581     description: |
1582       The content that should be appended to your /etc/hosts if you want to get
1583       hostname-based access to the deployed nodes (useful for testing without
1584       setting up a DNS).
1585     value: {get_attr: [allNodesConfig, hosts_entries]}