Pass NeutronEnableTunnelling to controllers
[apex-tripleo-heat-templates.git] / overcloud-without-mergepy.yaml
1 heat_template_version: 2015-04-30
2
3 description: >
4   Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
5   server,Dedicated RabbitMQ Server,Group of Nova Computes
6
7
8 # TODO(shadower): we should probably use the parameter groups to put
9 # some order in here.
10 parameters:
11
12   # Common parameters (not specific to a role)
13   AdminPassword:
14     default: unset
15     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
16     type: string
17     hidden: true
18   CeilometerBackend:
19     default: 'mongodb'
20     description: The ceilometer backend type.
21     type: string
22   CeilometerMeteringSecret:
23     default: unset
24     description: Secret shared by the ceilometer services.
25     type: string
26     hidden: true
27   CeilometerPassword:
28     default: unset
29     description: The password for the ceilometer service account.
30     type: string
31     hidden: true
32   # This has to be an UUID so for now we generate it outside the template
33   CephClusterFSID:
34     default: ''
35     type: string
36     description: The Ceph cluster FSID. Must be a UUID.
37   CephMonKey:
38     default: ''
39     description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
40     type: string
41   CephAdminKey:
42     default: ''
43     description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
44     type: string
45   CinderEnableIscsiBackend:
46     default: true
47     description: Whether to enable or not the Iscsi backend for Cinder
48     type: boolean
49   CloudName:
50     default: ''
51     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
52     type: string
53   ControlFixedIPs:
54     default: []
55     description: Should be used for arbitrary ips.
56     type: json
57   Debug:
58     default: ''
59     description: Set to True to enable debugging on all services.
60     type: string
61   DefaultSignalTransport:
62     default: CFN_SIGNAL
63     description: Transport to use for software-config signals.
64     type: string
65     constraints:
66       - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
67   GlancePort:
68     default: "9292"
69     description: Glance port.
70     type: string
71   GlanceProtocol:
72     default: http
73     description: Protocol to use when connecting to glance, set to https for SSL.
74     type: string
75   ImageUpdatePolicy:
76     default: 'REBUILD_PRESERVE_EPHEMERAL'
77     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
78     type: string
79   KeyName:
80     default: default
81     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
82     type: string
83     constraints:
84       - custom_constraint: nova.keypair
85   NeutronBridgeMappings:
86     description: >
87       The OVS logical->physical bridge mappings to use. See the Neutron
88       documentation for details. Defaults to mapping br-ex - the external
89       bridge on hosts - to a physical name 'datacentre' which can be used
90       to create provider networks (and we use this for the default floating
91       network) - if changing this either use different post-install network
92       scripts or be sure to keep 'datacentre' as a mapping network name.
93     type: string
94     default: "datacentre:br-ex"
95   NeutronControlPlaneID:
96     default: ''
97     type: string
98     description: Neutron ID for ctlplane network.
99   NeutronEnableTunnelling:
100     type: string
101     default: "True"
102   NeutronFlatNetworks:
103     type: string
104     default: 'datacentre'
105     description: >
106       If set, flat networks to configure in neutron plugins. Defaults to
107       'datacentre' to permit external network creation.
108   NeutronNetworkType:
109     default: 'gre'
110     description: The tenant network type for Neutron, either gre or vxlan.
111     type: string
112   NeutronPassword:
113     default: unset
114     description: The password for the neutron service account, used by neutron agents.
115     type: string
116     hidden: true
117   NeutronPublicInterface:
118     default: nic1
119     description: What interface to bridge onto br-ex for network nodes.
120     type: string
121   NeutronPublicInterfaceTag:
122     default: ''
123     description: >
124       VLAN tag for creating a public VLAN. The tag will be used to
125       create an access port on the exterior bridge for each control plane node,
126       and that port will be given the IP address returned by neutron from the
127       public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
128       overcloud.yaml to include the deployment of VLAN ports to the control
129       plane.
130     type: string
131   NeutronComputeAgentMode:
132     default: 'dvr'
133     description: Agent mode for the neutron-l3-agent on the compute hosts
134     type: string
135   NeutronAgentMode:
136     default: 'dvr_snat'
137     description: Agent mode for the neutron-l3-agent on the controller hosts
138     type: string
139   NeutronDVR:
140     default: 'False'
141     description: Whether to configure Neutron Distributed Virtual Routers
142     type: string
143   NeutronMetadataProxySharedSecret:
144     default: 'unset'
145     description: Shared secret to prevent spoofing
146     type: string
147   NeutronTunnelTypes:
148     default: 'gre'
149     description: |
150         The tunnel types for the Neutron tenant network. To specify multiple
151         values, use a comma separated string, like so: 'gre,vxlan'
152     type: string
153   NeutronMechanismDrivers:
154     default: 'openvswitch'
155     description: |
156         The mechanism drivers for the Neutron tenant network. To specify multiple
157         values, use a comma separated string, like so: 'openvswitch,l2_population'
158     type: string
159   NeutronAllowL3AgentFailover:
160     default: 'True'
161     description: Allow automatic l3-agent failover
162     type: string
163   NeutronL3HA:
164     default: 'False'
165     description: Whether to enable l3-agent HA
166     type: string
167   NovaPassword:
168     default: unset
169     description: The password for the nova service account, used by nova-api.
170     type: string
171     hidden: true
172   NtpServer:
173     type: string
174     default: ''
175   PublicVirtualFixedIPs:
176     default: []
177     description: >
178         Control the IP allocation for the PublicVirtualInterface port. E.g.
179         [{'ip_address':'1.2.3.4'}]
180     type: json
181   PublicVirtualNetwork:
182     default: 'ctlplane'
183     type: string
184     description: >
185         Neutron network to allocate public virtual IP port on.
186   RabbitCookieSalt:
187     type: string
188     default: unset
189     description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
190   # FIXME: 'guest' is provisioned in RabbitMQ by default, we should create a user if these are changed
191   RabbitUserName:
192     default: guest
193     description: The username for RabbitMQ
194     type: string
195   RabbitPassword:
196     default: guest
197     description: The password for RabbitMQ
198     type: string
199     hidden: true
200   RabbitClientUseSSL:
201     default: false
202     description: >
203         Rabbit client subscriber parameter to specify
204         an SSL connection to the RabbitMQ host.
205     type: string
206   RabbitClientPort:
207     default: 5672
208     description: Set rabbit subscriber port, change this if using SSL
209     type: number
210   SnmpdReadonlyUserName:
211     default: ro_snmp_user
212     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
213     type: string
214   SnmpdReadonlyUserPassword:
215     default: unset
216     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
217     type: string
218     hidden: true
219
220   # Controller-specific params
221   AdminToken:
222     default: unset
223     description: The keystone auth secret.
224     type: string
225     hidden: true
226   CinderEnableRbdBackend:
227     default: false
228     description: Whether to enable or not the Rbd backend for Cinder
229     type: boolean
230   CinderLVMLoopDeviceSize:
231     default: 5000
232     description: The size of the loopback file used by the cinder LVM driver.
233     type: number
234   CinderPassword:
235     default: unset
236     description: The password for the cinder service account, used by cinder-api.
237     type: string
238     hidden: true
239   CinderISCSIHelper:
240     default: tgtadm
241     description: The iSCSI helper to use with cinder.
242     type: string
243   ControllerCount:
244     type: number
245     default: 1
246   controllerExtraConfig:
247     default: {}
248     description: |
249       Controller specific configuration to inject into the cluster. Same
250       structure as ExtraConfig.
251     type: json
252   controllerImage:
253     type: string
254     default: overcloud-control
255     constraints:
256       - custom_constraint: glance.image
257   OvercloudControlFlavor:
258     description: Flavor for control nodes to request when deploying.
259     type: string
260     constraints:
261       - custom_constraint: nova.flavor
262   ControlVirtualInterface:
263     default: 'br-ex'
264     description: Interface where virtual ip will be assigned.
265     type: string
266   EnableGalera:
267     default: true
268     description: Whether to use Galera instead of regular MariaDB.
269     type: boolean
270   EnablePacemaker:
271     default: false
272     description: If enabled services will be monitored by Pacemaker; it
273       will manage VIPs as well, in place of Keepalived.
274     type: boolean
275   ControllerEnableCephStorage:
276     default: false
277     description: Whether to deploy Ceph Storage (OSD) on the Controller
278     type: boolean
279   ControllerEnableSwiftStorage:
280     default: true
281     description: Whether to enable Swift Storage on the Controller
282     type: boolean
283   ExtraConfig:
284     default: {}
285     description: |
286       Additional configuration to inject into the cluster. The JSON should have
287       the following structure:
288         {"FILEKEY":
289           {"config":
290             [{"section": "SECTIONNAME",
291               "values":
292                 [{"option": "OPTIONNAME",
293                   "value": "VALUENAME"
294                  }
295                 ]
296              }
297             ]
298           }
299         }
300       For instance:
301         {"nova":
302           {"config":
303             [{"section": "default",
304               "values":
305                 [{"option": "force_config_drive",
306                   "value": "always"
307                  }
308                 ]
309              },
310              {"section": "cells",
311               "values":
312                 [{"option": "driver",
313                   "value": "nova.cells.rpc_driver.CellsRPCDriver"
314                  }
315                 ]
316              }
317             ]
318           }
319         }
320     type: json
321   GlanceLogFile:
322     description: The filepath of the file to use for logging messages from Glance.
323     type: string
324     default: ''
325   GlanceNotifierStrategy:
326     description: Strategy to use for Glance notification queue
327     type: string
328     default: noop
329   GlancePassword:
330     default: unset
331     description: The password for the glance service account, used by the glance services.
332     type: string
333     hidden: true
334   GlanceBackend:
335     default: swift
336     description: The short name of the Glance backend to use. Should be one
337       of swift, rbd or file
338     type: string
339     constraints:
340     - allowed_values: ['swift', 'file', 'rbd']
341   HeatPassword:
342     default: unset
343     description: The password for the Heat service account, used by the Heat services.
344     type: string
345     hidden: true
346   HeatStackDomainAdminPassword:
347     description: Password for heat_domain_admin user.
348     type: string
349     default: ''
350     hidden: true
351   KeystoneCACertificate:
352     default: ''
353     description: Keystone self-signed certificate authority certificate.
354     type: string
355   KeystoneSigningCertificate:
356     default: ''
357     description: Keystone certificate for verifying token validity.
358     type: string
359   KeystoneSigningKey:
360     default: ''
361     description: Keystone key for signing tokens.
362     type: string
363     hidden: true
364   KeystoneSSLCertificate:
365     default: ''
366     description: Keystone certificate for verifying token validity.
367     type: string
368   KeystoneSSLCertificateKey:
369     default: ''
370     description: Keystone key for signing tokens.
371     type: string
372     hidden: true
373   MysqlInnodbBufferPoolSize:
374     description: >
375         Specifies the size of the buffer pool in megabytes. Setting to
376         zero should be interpreted as "no value" and will defer to the
377         lower level default.
378     type: number
379     default: 0
380   NeutronDnsmasqOptions:
381     default: 'dhcp-option-force=26,1400'
382     description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
383     type: string
384   NeutronPublicInterfaceDefaultRoute:
385     default: ''
386     description: A custom default route for the NeutronPublicInterface.
387     type: string
388   NeutronPublicInterfaceIP:
389     default: ''
390     description: A custom IP address to put onto the NeutronPublicInterface.
391     type: string
392   NeutronPublicInterfaceRawDevice:
393     default: ''
394     description: If set, the public interface is a vlan with this device as the raw device.
395     type: string
396   PublicVirtualInterface:
397     default: 'br-ex'
398     description: >
399         Specifies the interface where the public-facing virtual ip will be assigned.
400         This should be int_public when a VLAN is being used.
401     type: string
402   SSLCertificate:
403     default: ''
404     description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
405     type: string
406     hidden: true
407   SSLKey:
408     default: ''
409     description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
410     type: string
411     hidden: true
412   SSLCACertificate:
413     default: ''
414     description: If set, the contents of an SSL certificate authority file.
415     type: string
416   SwiftHashSuffix:
417     default: unset
418     description: A random string to be used as a salt when hashing to determine mappings in the ring.
419     type: string
420     hidden: true
421   SwiftPassword:
422     default: unset
423     description: The password for the swift service account, used by the swift proxy services.
424     type: string
425     hidden: true
426   SwiftMountCheck:
427     default: 'false'
428     description: Value of mount_check in Swift account/container/object -server.conf
429     type: boolean
430   SwiftMinPartHours:
431     type: number
432     default: 1
433     description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
434   SwiftPartPower:
435     default: 10
436     description: Partition Power to use when building Swift rings
437     type: number
438   SwiftReplicas:
439     type: number
440     default: 3
441     description: How many replicas to use in the swift rings.
442
443 # Compute-specific params
444   CeilometerComputeAgent:
445     description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
446     type: string
447     default: ''
448     constraints:
449     - allowed_values: ['', Present]
450   ComputeCount:
451     type: number
452     default: 1
453   HypervisorNeutronPhysicalBridge:
454     default: 'br-ex'
455     description: >
456       An OVS bridge to create on each hypervisor. This defaults to br-ex the
457       same as the control plane nodes, as we have a uniform configuration of
458       the openvswitch agent. Typically should not need to be changed.
459     type: string
460   HypervisorNeutronPublicInterface:
461     default: nic1
462     description: What interface to add to the HypervisorNeutronPhysicalBridge.
463     type: string
464   NeutronNetworkVLANRanges:
465     default: 'datacentre'
466     description: >
467       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
468       Neutron documentation for permitted values. Defaults to permitting any
469       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
470     type: string
471   NovaComputeDriver:
472     type: string
473     default: libvirt.LibvirtDriver
474   NovaComputeExtraConfig:
475     default: {}
476     description: |
477       NovaCompute specific configuration to inject into the cluster. Same
478       structure as ExtraConfig.
479     type: json
480   NovaComputeLibvirtType:
481     default: ''
482     type: string
483   NovaEnableRbdBackend:
484     default: false
485     description: Whether to enable or not the Rbd backend for Nova
486     type: boolean
487   NovaImage:
488     type: string
489     default: overcloud-compute
490     constraints:
491       - custom_constraint: glance.image
492   OvercloudComputeFlavor:
493     description: Use this flavor
494     type: string
495     constraints:
496       - custom_constraint: nova.flavor
497
498 # Block storage specific parameters
499   BlockStorageCount:
500     type: number
501     default: 0
502   BlockStorageImage:
503     default: overcloud-cinder-volume
504     type: string
505   OvercloudBlockStorageFlavor:
506     description: Flavor for block storage nodes to request when deploying.
507     type: string
508     constraints:
509       - custom_constraint: nova.flavor
510
511 # Object storage specific parameters
512   ObjectStorageCount:
513     type: number
514     default: 0
515   OvercloudSwiftStorageFlavor:
516     description: Flavor for Swift storage nodes to request when deploying.
517     type: string
518     constraints:
519       - custom_constraint: nova.flavor
520   SwiftStorageImage:
521     default: overcloud-swift-storage
522     type: string
523
524 # Ceph storage specific parameters
525   CephStorageCount:
526     type: number
527     default: 0
528   CephStorageImage:
529     default: overcloud-ceph-storage
530     type: string
531   OvercloudCephStorageFlavor:
532     default: baremetal
533     description: Flavor for Ceph storage nodes to request when deploying.
534     type: string
535     constraints:
536       - custom_constraint: nova.flavor
537
538 resources:
539
540   HeatAuthEncryptionKey:
541     type: OS::Heat::RandomString
542
543   PcsdPassword:
544     type: OS::Heat::RandomString
545     properties:
546       length: 16
547
548   HorizonSecret:
549     type: OS::Heat::RandomString
550     properties:
551       length: 10
552
553   Controller:
554     type: OS::Heat::ResourceGroup
555     depends_on: Networks
556     properties:
557       count: {get_param: ControllerCount}
558       resource_def:
559         type: OS::TripleO::Controller
560         properties:
561           AdminPassword: {get_param: AdminPassword}
562           AdminToken: {get_param: AdminToken}
563           CeilometerBackend: {get_param: CeilometerBackend}
564           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
565           CeilometerPassword: {get_param: CeilometerPassword}
566           CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
567           CinderPassword: {get_param: CinderPassword}
568           CinderISCSIHelper: {get_param: CinderISCSIHelper}
569           CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
570           CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
571           CloudName: {get_param: CloudName}
572           ControlVirtualInterface: {get_param: ControlVirtualInterface}
573           ControllerExtraConfig: {get_param: controllerExtraConfig}
574           Debug: {get_param: Debug}
575           EnableGalera: {get_param: EnableGalera}
576           EnablePacemaker: {get_param: EnablePacemaker}
577           EnableCephStorage: {get_param: ControllerEnableCephStorage}
578           EnableSwiftStorage: {get_param: ControllerEnableSwiftStorage}
579           ExtraConfig: {get_param: ExtraConfig}
580           Flavor: {get_param: OvercloudControlFlavor}
581           GlancePort: {get_param: GlancePort}
582           GlanceProtocol: {get_param: GlanceProtocol}
583           GlancePassword: {get_param: GlancePassword}
584           GlanceBackend: {get_param: GlanceBackend}
585           GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
586           GlanceLogFile: {get_param: GlanceLogFile}
587           HeatPassword: {get_param: HeatPassword}
588           HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
589           HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
590           HorizonSecret: {get_resource: HorizonSecret}
591           Image: {get_param: controllerImage}
592           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
593           KeyName: {get_param: KeyName}
594           KeystoneCACertificate: {get_param: KeystoneCACertificate}
595           KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
596           KeystoneSigningKey: {get_param: KeystoneSigningKey}
597           KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
598           KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
599           MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
600           MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
601           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
602           NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
603           NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
604           NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
605           NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
606           NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
607           NeutronPublicInterface: {get_param: NeutronPublicInterface}
608           NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
609           NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
610           NeutronPassword: {get_param: NeutronPassword}
611           NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
612           NeutronDVR: {get_param: NeutronDVR}
613           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
614           NeutronAgentMode: {get_param: NeutronAgentMode}
615           NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
616           NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
617           NeutronL3HA: {get_param: NeutronL3HA}
618           NeutronNetworkType: {get_param: NeutronNetworkType}
619           NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
620           NovaPassword: {get_param: NovaPassword}
621           NtpServer: {get_param: NtpServer}
622           PcsdPassword: {get_resource: PcsdPassword}
623           PublicVirtualInterface: {get_param: PublicVirtualInterface}
624           RabbitPassword: {get_param: RabbitPassword}
625           RabbitUserName: {get_param: RabbitUserName}
626           RabbitCookie: {get_attr: [RabbitCookie, value]}
627           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
628           RabbitClientPort: {get_param: RabbitClientPort}
629           SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
630           SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
631           SSLCertificate: {get_param: SSLCertificate}
632           SSLKey: {get_param: SSLKey}
633           SSLCACertificate: {get_param: SSLCACertificate}
634           SwiftHashSuffix: {get_param: SwiftHashSuffix}
635           SwiftMountCheck: {get_param: SwiftMountCheck}
636           SwiftMinPartHours: {get_param: SwiftMinPartHours}
637           SwiftPartPower: {get_param: SwiftPartPower}
638           SwiftPassword: {get_param: SwiftPassword}
639           SwiftReplicas: { get_param: SwiftReplicas}
640           VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
641           PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
642
643   Compute:
644     type: OS::Heat::ResourceGroup
645     depends_on: Networks
646     properties:
647       count: {get_param: ComputeCount}
648       resource_def:
649         type: OS::TripleO::Compute
650         properties:
651           AdminPassword: {get_param: AdminPassword}
652           CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
653           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
654           CeilometerPassword: {get_param: CeilometerPassword}
655           Debug: {get_param: Debug}
656           ExtraConfig: {get_param: ExtraConfig}
657           Flavor: {get_param: OvercloudComputeFlavor}
658           GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
659           GlancePort: {get_param: GlancePort}
660           GlanceProtocol: {get_param: GlanceProtocol}
661           Image: {get_param: NovaImage}
662           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
663           KeyName: {get_param: KeyName}
664           KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
665           NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
666           NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
667           NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
668           NeutronHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
669           NeutronNetworkType: {get_param: NeutronNetworkType}
670           NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
671           NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
672           NeutronPassword: {get_param: NeutronPassword}
673           NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
674           NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
675           NeutronDVR: {get_param: NeutronDVR}
676           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
677           NeutronAgentMode: {get_param: NeutronComputeAgentMode}
678           NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
679           NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
680           # L3 HA and Failover is not relevant for Computes, should be removed
681           NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
682           NeutronL3HA: {get_param: NeutronL3HA}
683           NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
684           NovaComputeDriver: {get_param: NovaComputeDriver}
685           NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
686           NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
687           NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
688           NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
689           NovaPassword: {get_param: NovaPassword}
690           NtpServer: {get_param: NtpServer}
691           RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
692           RabbitPassword: {get_param: RabbitPassword}
693           RabbitUserName: {get_param: RabbitUserName}
694           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
695           RabbitClientPort: {get_param: RabbitClientPort}
696           SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
697           SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
698
699   BlockStorage:
700     type: OS::Heat::ResourceGroup
701     depends_on: Networks
702     properties:
703       count: {get_param: BlockStorageCount}
704       resource_def:
705         type: OS::TripleO::BlockStorage
706         properties:
707           Debug: {get_param: Debug}
708           Image: {get_param: BlockStorageImage}
709           CinderISCSIHelper: {get_param: CinderISCSIHelper}
710           CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
711           # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
712           CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
713           CinderPassword: {get_param: CinderPassword}
714           VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
715           KeyName: {get_param: KeyName}
716           Flavor: {get_param: OvercloudBlockStorageFlavor}
717           RabbitPassword: {get_param: RabbitPassword}
718           RabbitUserName: {get_param: RabbitUserName}
719           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
720           RabbitClientPort: {get_param: RabbitClientPort}
721           NtpServer: {get_param: NtpServer}
722
723   ObjectStorage:
724     type: OS::Heat::ResourceGroup
725     depends_on: Networks
726     properties:
727       count: {get_param: ObjectStorageCount}
728       resource_def:
729         type: OS::TripleO::ObjectStorage
730         properties:
731           KeyName: {get_param: KeyName}
732           Flavor: {get_param: OvercloudSwiftStorageFlavor}
733           HashSuffix: {get_param: SwiftHashSuffix}
734           MountCheck: {get_param: SwiftMountCheck}
735           MinPartHours: {get_param: SwiftMinPartHours}
736           PartPower: {get_param: SwiftPartPower}
737           Image: {get_param: SwiftStorageImage}
738           Replicas: { get_param: SwiftReplicas}
739           NtpServer: {get_param: NtpServer}
740
741   CephStorage:
742     type: OS::Heat::ResourceGroup
743     depends_on: Networks
744     properties:
745       count: {get_param: CephStorageCount}
746       resource_def:
747         type: OS::TripleO::CephStorage
748         properties:
749           Image: {get_param: CephStorageImage}
750           KeyName: {get_param: KeyName}
751           Flavor: {get_param: OvercloudCephStorageFlavor}
752           NtpServer: {get_param: NtpServer}
753
754   allNodesConfig:
755     type: OS::TripleO::AllNodes::SoftwareConfig
756     properties:
757       compute_hosts: {get_attr: [Compute, hosts_entry]}
758       controller_hosts: {get_attr: [Controller, hosts_entry]}
759       controller_ips: {get_attr: [Controller, ip_address]}
760       block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
761       object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
762       ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
763       controller_names: {get_attr: [Controller, hostname]}
764
765   MysqlRootPassword:
766     type: OS::Heat::RandomString
767     properties:
768       length: 10
769
770   MysqlClusterUniquePart:
771     type: OS::Heat::RandomString
772     properties:
773       length: 10
774
775   RabbitCookie:
776     type: OS::Heat::RandomString
777     properties:
778       length: 20
779       salt: {get_param: RabbitCookieSalt}
780
781   # creates the network architecture
782   Networks:
783     type: OS::TripleO::Network
784
785   ControlVirtualIP:
786     type: OS::Neutron::Port
787     depends_on: Networks
788     properties:
789       name: control_virtual_ip
790       network_id: {get_param: NeutronControlPlaneID}
791       fixed_ips: {get_param: ControlFixedIPs}
792       replacement_policy: AUTO
793
794   PublicVirtualIP:
795     type: OS::Neutron::Port
796     depends_on: Networks
797     properties:
798       name: public_virtual_ip
799       network: {get_param: PublicVirtualNetwork}
800       fixed_ips: {get_param: PublicVirtualFixedIPs}
801       replacement_policy: AUTO
802
803   ControllerBootstrapNodeConfig:
804     type: OS::TripleO::BootstrapNode::SoftwareConfig
805     properties:
806       bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
807       bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
808
809   ControllerBootstrapNodeDeployment:
810     type: OS::Heat::StructuredDeployments
811     properties:
812       config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
813       servers: {get_attr: [Controller, attributes, nova_server_resource]}
814       signal_transport: NO_SIGNAL
815
816   ControllerSwiftDeployment:
817     type: OS::Heat::StructuredDeployments
818     properties:
819       config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
820       servers: {get_attr: [Controller, attributes, nova_server_resource]}
821       signal_transport: NO_SIGNAL
822
823   ObjectStorageSwiftDeployment:
824     type: OS::Heat::StructuredDeployments
825     properties:
826       config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
827       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
828       signal_transport: NO_SIGNAL
829
830   SwiftDevicesAndProxyConfig:
831     type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
832     properties:
833       controller_swift_devices: {get_attr: [Controller, swift_device]}
834       object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
835       controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
836
837   ComputeCephDeployment:
838     type: OS::Heat::StructuredDeployments
839     properties:
840       config: {get_attr: [CephClusterConfig, config_id]}
841       servers: {get_attr: [Compute, attributes, nova_server_resource]}
842
843   ControllerCephDeployment:
844     type: OS::Heat::StructuredDeployments
845     properties:
846       config: {get_attr: [CephClusterConfig, config_id]}
847       servers: {get_attr: [Controller, attributes, nova_server_resource]}
848
849   CephStorageCephDeployment:
850     type: OS::Heat::StructuredDeployments
851     properties:
852       config: {get_attr: [CephClusterConfig, config_id]}
853       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
854
855   CephClusterConfig:
856     type: OS::TripleO::CephClusterConfig::SoftwareConfig
857     properties:
858       ceph_fsid: {get_param: CephClusterFSID}
859       ceph_mon_key: {get_param: CephMonKey}
860       ceph_admin_key: {get_param: CephAdminKey}
861       ceph_mon_names: {get_attr: [Controller, hostname]}
862       ceph_mon_ips: {get_attr: [Controller, ip_address]}
863
864   ControllerClusterConfig:
865     type: OS::Heat::StructuredConfig
866     properties:
867       config:
868         corosync:
869           nodes: {get_attr: [Controller, corosync_node]}
870         horizon:
871           caches:
872             memcached:
873               nodes: {get_attr: [Controller, hostname]}
874         mysql:
875           nodes: {get_attr: [Controller, corosync_node]}
876         haproxy:
877           nodes: {get_attr: [Controller, corosync_node]}
878
879   ControllerClusterDeployment:
880     type: OS::Heat::StructuredDeployments
881     properties:
882       config: {get_resource: ControllerClusterConfig}
883       servers: {get_attr: [Controller, attributes, nova_server_resource]}
884       signal_transport: NO_SIGNAL
885
886   ControllerAllNodesDeployment:
887     type: OS::Heat::StructuredDeployments
888     properties:
889       config: {get_attr: [allNodesConfig, config_id]}
890       servers: {get_attr: [Controller, attributes, nova_server_resource]}
891
892   ComputeAllNodesDeployment:
893     type: OS::Heat::StructuredDeployments
894     properties:
895       config: {get_attr: [allNodesConfig, config_id]}
896       servers: {get_attr: [Compute, attributes, nova_server_resource]}
897
898   BlockStorageAllNodesDeployment:
899     type: OS::Heat::StructuredDeployments
900     properties:
901       config: {get_attr: [allNodesConfig, config_id]}
902       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
903
904   ObjectStorageAllNodesDeployment:
905     type: OS::Heat::StructuredDeployments
906     properties:
907       config: {get_attr: [allNodesConfig, config_id]}
908       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
909
910   CephStorageAllNodesDeployment:
911     type: OS::Heat::StructuredDeployments
912     properties:
913       config: {get_attr: [allNodesConfig, config_id]}
914       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
915
916   # Nested stack deployment runs after all other controller deployments
917   ControllerNodesPostDeployment:
918     type: OS::TripleO::ControllerPostDeployment
919     depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
920     properties:
921       servers: {get_attr: [Controller, attributes, nova_server_resource]}
922
923   ComputeNodesPostDeployment:
924     type: OS::TripleO::ComputePostDeployment
925     depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
926     properties:
927       servers: {get_attr: [Compute, attributes, nova_server_resource]}
928
929   ObjectStorageNodesPostDeployment:
930     type: OS::TripleO::ObjectStoragePostDeployment
931     depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
932     properties:
933       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
934
935   BlockStorageNodesPostDeployment:
936     type: OS::TripleO::BlockStoragePostDeployment
937     depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
938     properties:
939       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
940
941   CephStorageNodesPostDeployment:
942     type: OS::TripleO::CephStoragePostDeployment
943     depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
944     properties:
945       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
946
947 outputs:
948   KeystoneURL:
949     description: URL for the Overcloud Keystone service
950     value:
951       list_join:
952       - ''
953       - - http://
954         - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
955         - :5000/v2.0/