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