Merge "puppet: use identity_uri and auth_uri"
[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.
33   CephMonKey:
34     default: ''
35     description: The Ceph monitors key.
36     type: string
37   CephAdminKey:
38     default: ''
39     description: The Ceph admin client 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   RabbitUserName:
187     default: guest
188     description: The username for RabbitMQ
189     type: string
190   RabbitPassword:
191     default: guest
192     description: The password for RabbitMQ
193     type: string
194     hidden: true
195   RabbitClientUseSSL:
196     default: false
197     description: >
198         Rabbit client subscriber parameter to specify
199         an SSL connection to the RabbitMQ host.
200     type: string
201   RabbitClientPort:
202     default: 5672
203     description: Set rabbit subscriber port, change this if using SSL
204     type: number
205   SnmpdReadonlyUserName:
206     default: ro_snmp_user
207     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
208     type: string
209   SnmpdReadonlyUserPassword:
210     default: unset
211     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
212     type: string
213     hidden: true
214
215   # Controller-specific params
216   AdminToken:
217     default: unset
218     description: The keystone auth secret.
219     type: string
220     hidden: true
221   CinderEnableRbdBackend:
222     default: false
223     description: Whether to enable or not the Rbd backend for Cinder
224     type: boolean
225   CinderLVMLoopDeviceSize:
226     default: 5000
227     description: The size of the loopback file used by the cinder LVM driver.
228     type: number
229   CinderPassword:
230     default: unset
231     description: The password for the cinder service account, used by cinder-api.
232     type: string
233     hidden: true
234   CinderISCSIHelper:
235     default: tgtadm
236     description: The iSCSI helper to use with cinder.
237     type: string
238   ControllerCount:
239     type: number
240     default: 1
241   controllerExtraConfig:
242     default: {}
243     description: |
244       Controller specific configuration to inject into the cluster. Same
245       structure as ExtraConfig.
246     type: json
247   controllerImage:
248     type: string
249     default: overcloud-control
250     constraints:
251       - custom_constraint: glance.image
252   OvercloudControlFlavor:
253     description: Flavor for control nodes to request when deploying.
254     type: string
255     constraints:
256       - custom_constraint: nova.flavor
257   ControlVirtualInterface:
258     default: 'br-ex'
259     description: Interface where virtual ip will be assigned.
260     type: string
261   ExtraConfig:
262     default: {}
263     description: |
264       Additional configuration to inject into the cluster. The JSON should have
265       the following structure:
266         {"FILEKEY":
267           {"config":
268             [{"section": "SECTIONNAME",
269               "values":
270                 [{"option": "OPTIONNAME",
271                   "value": "VALUENAME"
272                  }
273                 ]
274              }
275             ]
276           }
277         }
278       For instance:
279         {"nova":
280           {"config":
281             [{"section": "default",
282               "values":
283                 [{"option": "force_config_drive",
284                   "value": "always"
285                  }
286                 ]
287              },
288              {"section": "cells",
289               "values":
290                 [{"option": "driver",
291                   "value": "nova.cells.rpc_driver.CellsRPCDriver"
292                  }
293                 ]
294              }
295             ]
296           }
297         }
298     type: json
299   GlanceLogFile:
300     description: The filepath of the file to use for logging messages from Glance.
301     type: string
302     default: ''
303   GlanceNotifierStrategy:
304     description: Strategy to use for Glance notification queue
305     type: string
306     default: noop
307   GlancePassword:
308     default: unset
309     description: The password for the glance service account, used by the glance services.
310     type: string
311     hidden: true
312   HeatPassword:
313     default: unset
314     description: The password for the Heat service account, used by the Heat services.
315     type: string
316     hidden: true
317   HeatStackDomainAdminPassword:
318     description: Password for heat_domain_admin user.
319     type: string
320     default: ''
321     hidden: true
322   KeystoneCACertificate:
323     default: ''
324     description: Keystone self-signed certificate authority certificate.
325     type: string
326   KeystoneSigningCertificate:
327     default: ''
328     description: Keystone certificate for verifying token validity.
329     type: string
330   KeystoneSigningKey:
331     default: ''
332     description: Keystone key for signing tokens.
333     type: string
334     hidden: true
335   KeystoneSSLCertificate:
336     default: ''
337     description: Keystone certificate for verifying token validity.
338     type: string
339   KeystoneSSLCertificateKey:
340     default: ''
341     description: Keystone key for signing tokens.
342     type: string
343     hidden: true
344   MysqlInnodbBufferPoolSize:
345     description: >
346         Specifies the size of the buffer pool in megabytes. Setting to
347         zero should be interpreted as "no value" and will defer to the
348         lower level default.
349     type: number
350     default: 0
351   NeutronDnsmasqOptions:
352     default: 'dhcp-option-force=26,1400'
353     description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
354     type: string
355   NeutronPublicInterfaceDefaultRoute:
356     default: ''
357     description: A custom default route for the NeutronPublicInterface.
358     type: string
359   NeutronPublicInterfaceIP:
360     default: ''
361     description: A custom IP address to put onto the NeutronPublicInterface.
362     type: string
363   NeutronPublicInterfaceRawDevice:
364     default: ''
365     description: If set, the public interface is a vlan with this device as the raw device.
366     type: string
367   PublicVirtualInterface:
368     default: 'br-ex'
369     description: >
370         Specifies the interface where the public-facing virtual ip will be assigned.
371         This should be int_public when a VLAN is being used.
372     type: string
373   SSLCertificate:
374     default: ''
375     description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
376     type: string
377     hidden: true
378   SSLKey:
379     default: ''
380     description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
381     type: string
382     hidden: true
383   SSLCACertificate:
384     default: ''
385     description: If set, the contents of an SSL certificate authority file.
386     type: string
387   SwiftHashSuffix:
388     default: unset
389     description: A random string to be used as a salt when hashing to determine mappings in the ring.
390     type: string
391     hidden: true
392   SwiftPassword:
393     default: unset
394     description: The password for the swift service account, used by the swift proxy services.
395     type: string
396     hidden: true
397   SwiftMountCheck:
398     default: 'false'
399     description: Value of mount_check in Swift account/container/object -server.conf
400     type: boolean
401   SwiftMinPartHours:
402     type: number
403     default: 1
404     description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
405   SwiftPartPower:
406     default: 10
407     description: Partition Power to use when building Swift rings
408     type: number
409   SwiftReplicas:
410     type: number
411     default: 3
412     description: How many replicas to use in the swift rings.
413
414 # Compute-specific params
415   CeilometerComputeAgent:
416     description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
417     type: string
418     default: ''
419     constraints:
420     - allowed_values: ['', Present]
421   ComputeCount:
422     type: number
423     default: 1
424   HypervisorNeutronPhysicalBridge:
425     default: 'br-ex'
426     description: >
427       An OVS bridge to create on each hypervisor. This defaults to br-ex the
428       same as the control plane nodes, as we have a uniform configuration of
429       the openvswitch agent. Typically should not need to be changed.
430     type: string
431   HypervisorNeutronPublicInterface:
432     default: nic1
433     description: What interface to add to the HypervisorNeutronPhysicalBridge.
434     type: string
435   NeutronNetworkVLANRanges:
436     default: 'datacentre'
437     description: >
438       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
439       Neutron documentation for permitted values. Defaults to permitting any
440       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
441     type: string
442   NovaComputeDriver:
443     type: string
444     default: libvirt.LibvirtDriver
445   NovaComputeExtraConfig:
446     default: {}
447     description: |
448       NovaCompute specific configuration to inject into the cluster. Same
449       structure as ExtraConfig.
450     type: json
451   NovaComputeLibvirtType:
452     default: ''
453     type: string
454   NovaEnableRbdBackend:
455     default: false
456     description: Whether to enable or not the Rbd backend for Nova
457     type: boolean
458   NovaImage:
459     type: string
460     default: overcloud-compute
461     constraints:
462       - custom_constraint: glance.image
463   OvercloudComputeFlavor:
464     description: Use this flavor
465     type: string
466     constraints:
467       - custom_constraint: nova.flavor
468
469 # Block storage specific parameters
470   BlockStorageCount:
471     type: number
472     default: 0
473   BlockStorageImage:
474     default: overcloud-cinder-volume
475     type: string
476   OvercloudBlockStorageFlavor:
477     description: Flavor for block storage nodes to request when deploying.
478     type: string
479     constraints:
480       - custom_constraint: nova.flavor
481
482 # Object storage specific parameters
483   ObjectStorageCount:
484     type: number
485     default: 0
486   OvercloudSwiftStorageFlavor:
487     description: Flavor for Swift storage nodes to request when deploying.
488     type: string
489     constraints:
490       - custom_constraint: nova.flavor
491   SwiftStorageImage:
492     default: overcloud-swift-storage
493     type: string
494
495 # Ceph storage specific parameters
496   CephStorageCount:
497     type: number
498     default: 0
499   CephStorageImage:
500     default: overcloud-ceph-storage
501     type: string
502   OvercloudCephStorageFlavor:
503     default: baremetal
504     description: Flavor for Ceph storage nodes to request when deploying.
505     type: string
506     constraints:
507       - custom_constraint: nova.flavor
508
509 resources:
510
511   HeatAuthEncryptionKey:
512     type: OS::Heat::RandomString
513
514   Controller:
515     type: OS::Heat::ResourceGroup
516     properties:
517       count: {get_param: ControllerCount}
518       resource_def:
519         type: OS::TripleO::Controller
520         properties:
521           AdminPassword: {get_param: AdminPassword}
522           AdminToken: {get_param: AdminToken}
523           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
524           CeilometerPassword: {get_param: CeilometerPassword}
525           CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
526           CinderPassword: {get_param: CinderPassword}
527           CinderISCSIHelper: {get_param: CinderISCSIHelper}
528           CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
529           CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
530           CloudName: {get_param: CloudName}
531           ControlVirtualInterface: {get_param: ControlVirtualInterface}
532           ControllerExtraConfig: {get_param: controllerExtraConfig}
533           ExtraConfig: {get_param: ExtraConfig}
534           Flavor: {get_param: OvercloudControlFlavor}
535           GlancePort: {get_param: GlancePort}
536           GlanceProtocol: {get_param: GlanceProtocol}
537           GlancePassword: {get_param: GlancePassword}
538           GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
539           GlanceLogFile: {get_param: GlanceLogFile}
540           HeatPassword: {get_param: HeatPassword}
541           HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
542           HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
543           Image: {get_param: controllerImage}
544           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
545           KeyName: {get_param: KeyName}
546           KeystoneCACertificate: {get_param: KeystoneCACertificate}
547           KeystoneSigningCertificate: {get_param: KeystoneSigningCertificate}
548           KeystoneSigningKey: {get_param: KeystoneSigningKey}
549           KeystoneSSLCertificate: {get_param: KeystoneSSLCertificate}
550           KeystoneSSLCertificateKey: {get_param: KeystoneSSLCertificateKey}
551           MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
552           MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
553           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
554           NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
555           NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
556           NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
557           NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
558           NeutronPublicInterface: {get_param: NeutronPublicInterface}
559           NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
560           NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
561           NeutronPassword: {get_param: NeutronPassword}
562           NeutronDnsmasqOptions: {get_param: NeutronDnsmasqOptions}
563           NeutronDVR: {get_param: NeutronDVR}
564           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
565           NeutronAgentMode: {get_param: NeutronAgentMode}
566           NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
567           NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
568           NeutronL3HA: {get_param: NeutronL3HA}
569           NeutronNetworkType: {get_param: NeutronNetworkType}
570           NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
571           NovaPassword: {get_param: NovaPassword}
572           NtpServer: {get_param: NtpServer}
573           PublicVirtualInterface: {get_param: PublicVirtualInterface}
574           RabbitUserName: {get_param: RabbitUserName}
575           RabbitPassword: {get_param: RabbitPassword}
576           RabbitCookie: {get_attr: [RabbitCookie, value]}
577           RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
578           RabbitClientPort: {get_param: RabbitClientPort}
579           SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
580           SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
581           SSLCertificate: {get_param: SSLCertificate}
582           SSLKey: {get_param: SSLKey}
583           SSLCACertificate: {get_param: SSLCACertificate}
584           SwiftHashSuffix: {get_param: SwiftHashSuffix}
585           SwiftMountCheck: {get_param: SwiftMountCheck}
586           SwiftMinPartHours: {get_param: SwiftMinPartHours}
587           SwiftPartPower: {get_param: SwiftPartPower}
588           SwiftPassword: {get_param: SwiftPassword}
589           SwiftReplicas: { get_param: SwiftReplicas}
590           VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
591           PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
592
593   Compute:
594     type: OS::Heat::ResourceGroup
595     properties:
596       count: {get_param: ComputeCount}
597       resource_def:
598         type: OS::TripleO::Compute
599         properties:
600           AdminPassword: {get_param: AdminPassword}
601           CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
602           CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
603           CeilometerPassword: {get_param: CeilometerPassword}
604           ExtraConfig: {get_param: ExtraConfig}
605           Flavor: {get_param: OvercloudComputeFlavor}
606           GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
607           GlancePort: {get_param: GlancePort}
608           GlanceProtocol: {get_param: GlanceProtocol}
609           Image: {get_param: NovaImage}
610           ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
611           KeyName: {get_param: KeyName}
612           KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
613           NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
614           NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
615           NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
616           NeutronHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
617           NeutronNetworkType: {get_param: NeutronNetworkType}
618           NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
619           NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
620           NeutronPassword: {get_param: NeutronPassword}
621           NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
622           NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
623           NeutronDVR: {get_param: NeutronDVR}
624           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
625           NeutronAgentMode: {get_param: NeutronComputeAgentMode}
626           NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
627           NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
628           NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
629           NeutronL3HA: {get_param: NeutronL3HA}
630           NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
631           NovaComputeDriver: {get_param: NovaComputeDriver}
632           NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
633           NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
634           NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
635           NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
636           NovaPassword: {get_param: NovaPassword}
637           NtpServer: {get_param: NtpServer}
638           RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
639           RabbitPassword: {get_param: RabbitPassword}
640           RabbitUserName: {get_param: RabbitUserName}
641           SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
642           SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
643
644   BlockStorage:
645     type: OS::Heat::ResourceGroup
646     properties:
647       count: {get_param: BlockStorageCount}
648       resource_def:
649         type: OS::TripleO::BlockStorage
650         properties:
651           Image: {get_param: BlockStorageImage}
652           CinderISCSIHelper: {get_param: CinderISCSIHelper}
653           CinderLVMLoopDeviceSize: {get_param: CinderLVMLoopDeviceSize}
654           # Purpose of the dedicated BlockStorage nodes should be to use their local LVM
655           CinderEnableIscsiBackend: {get_param: CinderEnableIscsiBackend}
656           VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
657           KeyName: {get_param: KeyName}
658           Flavor: {get_param: OvercloudBlockStorageFlavor}
659           RabbitPassword: {get_param: RabbitPassword}
660           RabbitUserName: {get_param: RabbitUserName}
661           NtpServer: {get_param: NtpServer}
662
663   ObjectStorage:
664     type: OS::Heat::ResourceGroup
665     properties:
666       count: {get_param: ObjectStorageCount}
667       resource_def:
668         type: OS::TripleO::ObjectStorage
669         properties:
670           KeyName: {get_param: KeyName}
671           Flavor: {get_param: OvercloudSwiftStorageFlavor}
672           HashSuffix: {get_param: SwiftHashSuffix}
673           MountCheck: {get_param: SwiftMountCheck}
674           MinPartHours: {get_param: SwiftMinPartHours}
675           PartPower: {get_param: SwiftPartPower}
676           Image: {get_param: SwiftStorageImage}
677           Replicas: { get_param: SwiftReplicas}
678           NtpServer: {get_param: NtpServer}
679
680   CephStorage:
681     type: OS::Heat::ResourceGroup
682     properties:
683       count: {get_param: CephStorageCount}
684       resource_def:
685         type: OS::TripleO::CephStorage
686         properties:
687           Image: {get_param: CephStorageImage}
688           KeyName: {get_param: KeyName}
689           Flavor: {get_param: OvercloudCephStorageFlavor}
690           NtpServer: {get_param: NtpServer}
691
692   allNodesConfig:
693     type: OS::TripleO::AllNodes::SoftwareConfig
694     properties:
695       compute_hosts: {get_attr: [Compute, hosts_entry]}
696       controller_hosts: {get_attr: [Controller, hosts_entry]}
697       block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
698       object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
699       ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
700       controller_names: {get_attr: [Controller, hostname]}
701
702   MysqlRootPassword:
703     type: OS::Heat::RandomString
704     properties:
705       length: 10
706
707   MysqlClusterUniquePart:
708     type: OS::Heat::RandomString
709     properties:
710       length: 10
711
712   RabbitCookie:
713     type: OS::Heat::RandomString
714     properties:
715       length: 20
716       salt: {get_param: RabbitCookieSalt}
717
718   ControlVirtualIP:
719     type: OS::Neutron::Port
720     properties:
721       name: control_virtual_ip
722       network_id: {get_param: NeutronControlPlaneID}
723       fixed_ips: {get_param: ControlFixedIPs}
724       replacement_policy: AUTO
725
726   PublicVirtualIP:
727     type: OS::Neutron::Port
728     properties:
729       name: public_virtual_ip
730       network: {get_param: PublicVirtualNetwork}
731       fixed_ips: {get_param: PublicVirtualFixedIPs}
732       replacement_policy: AUTO
733
734   ControllerBootstrapNodeConfig:
735     type: OS::TripleO::BootstrapNode::SoftwareConfig
736     properties:
737       bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
738
739   ControllerBootstrapNodeDeployment:
740     type: OS::Heat::StructuredDeployments
741     properties:
742       config: {get_attr: [ControllerBootstrapNodeConfig, config_id]}
743       servers: {get_attr: [Controller, attributes, nova_server_resource]}
744       signal_transport: NO_SIGNAL
745
746   ControllerSwiftDeployment:
747     type: OS::Heat::StructuredDeployments
748     properties:
749       config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
750       servers: {get_attr: [Controller, attributes, nova_server_resource]}
751       signal_transport: NO_SIGNAL
752
753   ObjectStorageSwiftDeployment:
754     type: OS::Heat::StructuredDeployments
755     properties:
756       config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
757       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
758       signal_transport: NO_SIGNAL
759
760   SwiftDevicesAndProxyConfig:
761     type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
762     properties:
763       controller_swift_devices: {get_attr: [Controller, swift_device]}
764       object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
765       controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
766
767   ComputeCephDeployment:
768     type: OS::Heat::StructuredDeployments
769     properties:
770       config: {get_attr: [CephClusterConfig, config_id]}
771       servers: {get_attr: [Compute, attributes, nova_server_resource]}
772
773   ControllerCephDeployment:
774     type: OS::Heat::StructuredDeployments
775     properties:
776       config: {get_attr: [CephClusterConfig, config_id]}
777       servers: {get_attr: [Controller, attributes, nova_server_resource]}
778
779   CephStorageCephDeployment:
780     type: OS::Heat::StructuredDeployments
781     properties:
782       config: {get_attr: [CephClusterConfig, config_id]}
783       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
784
785   CephClusterConfig:
786     type: OS::TripleO::CephClusterConfig::SoftwareConfig
787     properties:
788       ceph_fsid: {get_param: CephClusterFSID}
789       ceph_mon_key: {get_param: CephMonKey}
790       ceph_admin_key: {get_param: CephAdminKey}
791       ceph_mon_names: {get_attr: [Controller, hostname]}
792       ceph_mon_ips: {get_attr: [Controller, ip_address]}
793
794   ControllerClusterConfig:
795     type: OS::Heat::StructuredConfig
796     properties:
797       config:
798         corosync:
799           nodes: {get_attr: [Controller, corosync_node]}
800         horizon:
801           caches:
802             memcached:
803               nodes: {get_attr: [Controller, hostname]}
804         mysql:
805           nodes: {get_attr: [Controller, corosync_node]}
806         haproxy:
807           nodes: {get_attr: [Controller, corosync_node]}
808
809   ControllerClusterDeployment:
810     type: OS::Heat::StructuredDeployments
811     properties:
812       config: {get_resource: ControllerClusterConfig}
813       servers: {get_attr: [Controller, attributes, nova_server_resource]}
814       signal_transport: NO_SIGNAL
815
816   ControllerAllNodesDeployment:
817     type: OS::Heat::StructuredDeployments
818     properties:
819       config: {get_attr: [allNodesConfig, config_id]}
820       servers: {get_attr: [Controller, attributes, nova_server_resource]}
821
822   ComputeAllNodesDeployment:
823     type: OS::Heat::StructuredDeployments
824     properties:
825       config: {get_attr: [allNodesConfig, config_id]}
826       servers: {get_attr: [Compute, attributes, nova_server_resource]}
827
828   BlockStorageAllNodesDeployment:
829     type: OS::Heat::StructuredDeployments
830     properties:
831       config: {get_attr: [allNodesConfig, config_id]}
832       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
833
834   ObjectStorageAllNodesDeployment:
835     type: OS::Heat::StructuredDeployments
836     properties:
837       config: {get_attr: [allNodesConfig, config_id]}
838       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
839
840   CephStorageAllNodesDeployment:
841     type: OS::Heat::StructuredDeployments
842     properties:
843       config: {get_attr: [allNodesConfig, config_id]}
844       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
845
846   # Nested stack deployment runs after all other controller deployments
847   ControllerNodesPostDeployment:
848     type: OS::TripleO::ControllerPostDeployment
849     depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
850     properties:
851       servers: {get_attr: [Controller, attributes, nova_server_resource]}
852
853   ComputeNodesPostDeployment:
854     type: OS::TripleO::ComputePostDeployment
855     depends_on: ComputeAllNodesDeployment
856     properties:
857       servers: {get_attr: [Compute, attributes, nova_server_resource]}
858
859   ObjectStorageNodesPostDeployment:
860     type: OS::TripleO::ObjectStoragePostDeployment
861     depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
862     properties:
863       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
864
865   BlockStorageNodesPostDeployment:
866     type: OS::TripleO::BlockStoragePostDeployment
867     depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
868     properties:
869       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
870
871   CephStorageNodesPostDeployment:
872     type: OS::TripleO::CephStoragePostDeployment
873     depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
874     properties:
875       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
876
877 outputs:
878   KeystoneURL:
879     description: URL for the Overcloud Keystone service
880     value:
881       list_join:
882       - ''
883       - - http://
884         - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
885         - :5000/v2.0/