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