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