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