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