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