Add missing Neutron DVR params to without-mergepy
[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           NovaDSN:
581             list_join:
582               - ''
583               - - mysql://nova:unset@
584                 - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
585                 - /nova
586           CeilometerDSN:
587             list_join:
588               - ''
589               - - mysql://ceilometer:unset@
590                 - *compute_database_host
591                 - /ceilometer
592           NeutronDSN:
593             list_join:
594               - ''
595               - - mysql://neutron:unset@
596                 - *compute_database_host
597                 - /ovs_neutron
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           NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
614           NeutronNetworkType: {get_param: NeutronNetworkType}
615           NeutronPassword: {get_param: NeutronPassword}
616           NeutronPublicInterface: {get_param: NeutronPublicInterface}
617           Flavor: {get_param: OvercloudBlockStorageFlavor}
618           RabbitPassword: {get_param: RabbitPassword}
619           RabbitUserName: {get_param: RabbitUserName}
620
621   ObjectStorage:
622     type: OS::Heat::ResourceGroup
623     properties:
624       count: {get_param: ObjectStorageCount}
625       resource_def:
626         type: OS::TripleO::ObjectStorage
627         properties:
628           ControllerIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
629           KeyName: {get_param: KeyName}
630           NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
631           NeutronNetworkType: {get_param: NeutronNetworkType}
632           Flavor: {get_param: OvercloudSwiftStorageFlavor}
633           HashSuffix: {get_param: SwiftHashSuffix}
634           PartPower: {get_param: SwiftPartPower}
635           Password: {get_param: SwiftPassword}
636           Image: {get_param: SwiftStorageImage}
637           Replicas: { get_param: SwiftReplicas}
638
639
640   allNodesConfig:
641     type: OS::Heat::StructuredConfig
642     properties:
643       config:
644         completion-signal: {get_input: deploy_signal_id}
645         hosts:
646           list_join:
647           - "\n"
648           - - list_join:
649               - "\n"
650               - {get_attr: [Compute, hosts_entry]}
651             - list_join:
652               - "\n"
653               - {get_attr: [Controller, hosts_entry]}
654             - list_join:
655               - "\n"
656               - {get_attr: [BlockStorage, hosts_entry]}
657             - list_join:
658               - "\n"
659               - {get_attr: [ObjectStorage, hosts_entry]}
660         rabbit:
661           nodes:
662             list_join:
663             - ','
664             - {get_attr: [Controller, hostname]}
665
666   MysqlRootPassword:
667     type: OS::Heat::RandomString
668     properties:
669       length: 10
670
671   MysqlClusterUniquePart:
672     type: OS::Heat::RandomString
673     properties:
674       length: 10
675
676   RabbitCookie:
677     type: OS::Heat::RandomString
678     properties:
679       length: 20
680       salt: {get_param: RabbitCookieSalt}
681
682   ControlVirtualIP:
683     type: OS::Neutron::Port
684     properties:
685       name: control_virtual_ip
686       network_id: {get_param: NeutronControlPlaneID}
687       fixed_ips: {get_param: ControlFixedIPs}
688       replacement_policy: AUTO
689
690   PublicVirtualIP:
691     type: OS::Neutron::Port
692     properties:
693       name: public_virtual_ip
694       network: {get_param: PublicVirtualNetwork}
695       fixed_ips: {get_param: PublicVirtualFixedIPs}
696       replacement_policy: AUTO
697
698   ControllerBootstrapNodeConfig:
699     type: OS::Heat::StructuredConfig
700     properties:
701       group: os-apply-config
702       config:
703         bootstrap_host:
704           bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
705
706   ControllerBootstrapNodeDeployment:
707     type: OS::Heat::StructuredDeployments
708     properties:
709       config: {get_resource: ControllerBootstrapNodeConfig}
710       servers: {get_attr: [Controller, attributes, nova_server_resource]}
711       signal_transport: NO_SIGNAL
712
713   ControllerSwiftDeployment:
714     type: OS::Heat::StructuredDeployments
715     properties:
716       config: {get_resource: SwiftDevicesAndProxyConfig}
717       servers: {get_attr: [Controller, attributes, nova_server_resource]}
718       signal_transport: NO_SIGNAL
719
720   ObjectStorageSwiftDeployment:
721     type: OS::Heat::StructuredDeployments
722     properties:
723       config: {get_resource: SwiftDevicesAndProxyConfig}
724       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
725       signal_transport: NO_SIGNAL
726
727   SwiftDevicesAndProxyConfig:
728     type: OS::Heat::StructuredConfig
729     properties:
730       group: os-apply-config
731       config:
732         swift:
733           devices:
734             list_join:
735             - ", "
736             - - list_join:
737                 - ", "
738                 - {get_attr: [Controller, swift_device]}
739               - list_join:
740                 - ", "
741                 - {get_attr: [ObjectStorage, swift_device]}
742           proxy-memcache:
743             list_join:
744             - ","
745             - {get_attr: [Controller, swift_proxy_memcache]}
746
747   ControllerClusterConfig:
748     type: OS::Heat::StructuredConfig
749     properties:
750       config:
751         corosync:
752           nodes: {get_attr: [Controller, corosync_node]}
753         horizon:
754           caches:
755             memcached:
756               nodes: {get_attr: [Controller, hostname]}
757         mysql:
758           nodes: {get_attr: [Controller, corosync_node]}
759         haproxy:
760           nodes: {get_attr: [Controller, corosync_node]}
761
762   ControllerClusterDeployment:
763     type: OS::Heat::StructuredDeployments
764     properties:
765       config: {get_resource: ControllerClusterConfig}
766       servers: {get_attr: [Controller, attributes, nova_server_resource]}
767       signal_transport: NO_SIGNAL
768
769   ControllerAllNodesDeployment:
770     type: OS::Heat::StructuredDeployments
771     properties:
772       config: {get_resource: allNodesConfig}
773       servers: {get_attr: [Controller, attributes, nova_server_resource]}
774
775   ComputeAllNodesDeployment:
776     type: OS::Heat::StructuredDeployments
777     properties:
778       config: {get_resource: allNodesConfig}
779       servers: {get_attr: [Compute, attributes, nova_server_resource]}
780
781
782 outputs:
783   KeystoneURL:
784     description: URL for the Overcloud Keystone service
785     value:
786       list_join:
787       - ''
788       - - http://
789         - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
790         - :5000/v2.0/