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