64deb95bed914280784c492a74773d5fcc1b8fb3
[apex-tripleo-heat-templates.git] / overcloud-source.yaml
1 description: Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
2   server,Dedicated RabbitMQ Server,Group of Nova Computes
3 heat_template_version: 2013-05-23
4 parameters:
5   AdminPassword:
6     default: unset
7     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
8     type: string
9     hidden: true
10   AdminToken:
11     default: unset
12     description: The keystone auth secret.
13     type: string
14     hidden: true
15   CeilometerComputeAgent:
16     description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
17     type: string
18     default: ''
19     constraints:
20     - allowed_values: ['', Present]
21   CeilometerMeteringSecret:
22     default: unset
23     description: Secret shared by the ceilometer services.
24     type: string
25     hidden: true
26   CeilometerPassword:
27     default: unset
28     description: The password for the ceilometer service account.
29     type: string
30     hidden: true
31   CinderISCSIHelper:
32     default: tgtadm
33     description: The iSCSI helper to use with cinder.
34     type: string
35   CinderLVMLoopDeviceSize:
36     default: 5000
37     description: The size of the loopback file used by the cinder LVM driver.
38     type: number
39   CinderPassword:
40     default: unset
41     description: The password for the cinder service account, used by cinder-api.
42     type: string
43     hidden: true
44   CloudName:
45     default: ''
46     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
47     type: string
48   ControlFixedIPs:
49     default: []
50     description: Should be used for arbitrary ips.
51     type: json
52   controllerExtraConfig:
53     default: {}
54     description: |
55       Controller specific configuration to inject into the cluster. Same
56       structure as ExtraConfig.
57     type: json
58   controllerImage:
59     type: string
60     default: overcloud-control
61     constraints:
62       - custom_constraint: glance.image
63   ControlVirtualInterface:
64     default: 'br-ex'
65     description: Interface where virtual ip will be assigned.
66     type: string
67   Debug:
68     default: ''
69     description: Set to True to enable debugging on all services.
70     type: string
71   DefaultSignalTransport:
72     default: CFN_SIGNAL
73     description: Transport to use for software-config signals.
74     type: string
75     constraints:
76       - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
77   ExtraConfig:
78     default: {}
79     description: |
80       Additional configuration to inject into the cluster. The JSON should have
81       the following structure:
82         {"FILEKEY":
83           {"config":
84             [{"section": "SECTIONNAME",
85               "values":
86                 [{"option": "OPTIONNAME",
87                   "value": "VALUENAME"
88                  }
89                 ]
90              }
91             ]
92           }
93         }
94       For instance:
95         {"nova":
96           {"config":
97             [{"section": "default",
98               "values":
99                 [{"option": "force_config_drive",
100                   "value": "always"
101                  }
102                 ]
103              },
104              {"section": "cells",
105               "values":
106                 [{"option": "driver",
107                   "value": "nova.cells.rpc_driver.CellsRPCDriver"
108                  }
109                 ]
110              }
111             ]
112           }
113         }
114     type: json
115   GlanceLogFile:
116     description: The filepath of the file to use for logging messages from Glance.
117     type: string
118     default: ''
119   GlancePassword:
120     default: unset
121     description: The password for the glance service account, used by the glance services.
122     type: string
123     hidden: true
124   GlancePort:
125     default: 9292
126     description: Glance port.
127     type: string
128   GlanceProtocol:
129     default: http
130     description: Protocol to use when connecting to glance, set to https for SSL.
131     type: string
132   GlanceNotifierStrategy:
133     description: Strategy to use for Glance notification queue
134     type: string
135     default: noop
136   HeatPassword:
137     default: unset
138     description: The password for the Heat service account, used by the Heat services.
139     type: string
140     hidden: true
141   HeatStackDomainAdminPassword:
142     description: Password for heat_domain_admin user.
143     type: string
144     default: ''
145     hidden: true
146   HypervisorNeutronPhysicalBridge:
147     default: 'br-ex'
148     description: >
149       An OVS bridge to create on each hypervisor. This defaults to br-ex the
150       same as the control plane nodes, as we have a uniform configuration of
151       the openvswitch agent. Typically should not need to be changed.
152     type: string
153   HypervisorNeutronPublicInterface:
154     default: 'eth0'
155     description: What interface to add to the HypervisorNeutronPhysicalBridge.
156     type: string
157   ImageUpdatePolicy:
158     default: 'REBUILD_PRESERVE_EPHEMERAL'
159     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
160     type: string
161   KeyName:
162     default: default
163     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
164     type: string
165     constraints:
166       - custom_constraint: nova.keypair
167   KeystoneCACertificate:
168     default: ''
169     description: Keystone self-signed certificate authority certificate.
170     type: string
171   KeystoneSigningCertificate:
172     default: ''
173     description: Keystone certificate for verifying token validity.
174     type: string
175   KeystoneSigningKey:
176     default: ''
177     description: Keystone key for signing tokens.
178     type: string
179     hidden: true
180   KeystoneSSLCertificate:
181     default: ''
182     description: Keystone certificate for verifying token validity.
183     type: string
184   KeystoneSSLCertificateKey:
185     default: ''
186     description: Keystone key for signing tokens.
187     type: string
188     hidden: true
189   LiveUpdateComputeImage:
190     type: string
191     description: The image ID for live-updates to the overcloud compute nodes.
192     default: ''
193   LiveUpdateHost:
194     type: string
195     description: The IP address for the undercloud Glance API.
196     default: ''
197   LiveUpdatePassword:
198     type: string
199     default: ''
200     description: The live-update password for the undercloud Glance API.
201     hidden: true
202   LiveUpdateTenantName:
203     type: string
204     description: The live-update tenant name for the undercloud Glance API.
205     default: ''
206   LiveUpdateUserName:
207     type: string
208     description: The live-update username for the undercloud Glance API.
209     default: ''
210   MysqlInnodbBufferPoolSize:
211     description: >
212         Specifies the size of the buffer pool in megabytes. Setting to
213         zero should be interpreted as "no value" and will defer to the
214         lower level default.
215     type: number
216     default: 0
217   NeutronBridgeMappings:
218     description: >
219       The OVS logical->physical bridge mappings to use. See the Neutron
220       documentation for details. Defaults to mapping br-ex - the external
221       bridge on hosts - to a physical name 'datacentre' which can be used
222       to create provider networks (and we use this for the default floating
223       network) - if changing this either use different post-install network
224       scripts or be sure to keep 'datacentre' as a mapping network name.
225     type: string
226     default: "datacentre:br-ex"
227   NeutronControlPlaneID:
228     default: ''
229     type: string
230     description: Neutron ID for ctlplane network.
231   NeutronDnsmasqOptions:
232     default: 'dhcp-option-force=26,1400'
233     description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
234     type: string
235   NeutronFlatNetworks:
236     type: string
237     default: 'datacentre'
238     description: >
239       If set, flat networks to configure in neutron plugins. Defaults to
240       'datacentre' to permit external network creation.
241   NeutronNetworkType:
242     default: 'gre'
243     description: The tenant network type for Neutron, either gre or vxlan.
244     type: string
245   NeutronNetworkVLANRanges:
246     default: 'datacentre'
247     description: >
248       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
249       Neutron documentation for permitted values. Defaults to permitting any
250       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
251     type: string
252   NeutronPassword:
253     default: unset
254     description: The password for the neutron service account, used by neutron agents.
255     type: string
256     hidden: true
257   NeutronPublicInterface:
258     default: eth0
259     description: What interface to bridge onto br-ex for network nodes.
260     type: string
261   NeutronPublicInterfaceDefaultRoute:
262     default: ''
263     description: A custom default route for the NeutronPublicInterface.
264     type: string
265   NeutronPublicInterfaceIP:
266     default: ''
267     description: A custom IP address to put onto the NeutronPublicInterface.
268     type: string
269   NeutronPublicInterfaceRawDevice:
270     default: ''
271     description: If set, the public interface is a vlan with this device as the raw device.
272     type: string
273   NeutronPublicInterfaceTag:
274     default: ''
275     description: >
276       VLAN tag for creating a public VLAN. The tag will be used to
277       create an access port on the exterior bridge for each control plane node,
278       and that port will be given the IP address returned by neutron from the
279       public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
280       overcloud.yaml to include the deployment of VLAN ports to the control
281       plane.
282     type: string
283   NeutronTunnelTypes:
284     default: 'gre'
285     description: |
286         The tunnel types for the Neutron tenant network. To specify multiple
287         values, use a comma separated string, like so: 'gre,vxlan'
288     type: string
289   NovaComputeDriver:
290     default: libvirt.LibvirtDriver
291     type: string
292   NovaComputeExtraConfig:
293     default: {}
294     description: |
295       NovaCompute specific configuration to inject into the cluster. Same
296       structure as ExtraConfig.
297     type: json
298   NovaComputeLibvirtType:
299     default: ''
300     type: string
301   NovaImage:
302     type: string
303     default: overcloud-compute
304     constraints:
305       - custom_constraint: glance.image
306   NovaPassword:
307     default: unset
308     description: The password for the nova service account, used by nova-api.
309     type: string
310     hidden: true
311   NtpServer:
312     type: string
313     default: ''
314   OvercloudComputeFlavor:
315     default: baremetal
316     description: Flavor for compute nodes to request when deploying.
317     type: string
318     constraints:
319       - custom_constraint: nova.flavor
320   OvercloudControlFlavor:
321     default: baremetal
322     description: Flavor for control nodes to request when deploying.
323     type: string
324     constraints:
325       - custom_constraint: nova.flavor
326   PublicVirtualFixedIPs:
327     default: []
328     description: >
329         Control the IP allocation for the PublicVirtualInterface port. E.g.
330         [{'ip_address':'1.2.3.4'}]
331     type: json
332   PublicVirtualInterface:
333     default: 'br-ex'
334     description: >
335         Specifies the interface where the public-facing virtual ip will be assigned.
336         This should be int_public when a VLAN is being used.
337     type: string
338   PublicVirtualNetwork:
339     default: 'ctlplane'
340     type: string
341     description: >
342         Neutron network to allocate public virtual IP port on.
343   RabbitCookieSalt:
344     type: string
345     default: unset
346     description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
347   RabbitPassword:
348     default: guest
349     description: The password for RabbitMQ
350     type: string
351     hidden: true
352   RabbitUserName:
353     default: guest
354     description: The username for RabbitMQ
355     type: string
356   RabbitClientUseSSL:
357     default: false
358     description: >
359         Rabbit client subscriber parameter to specify
360         an SSL connection to the RabbitMQ host.
361     type: string
362   RabbitClientPort:
363     default: 5672
364     description: Set rabbit subscriber port, change this if using SSL
365     type: number
366   SnmpdReadonlyUserName:
367     default: ro_snmp_user
368     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
369     type: string
370   SnmpdReadonlyUserPassword:
371     default: unset
372     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
373     type: string
374     hidden: true
375 resources:
376   ControlVirtualIP:
377     type: OS::Neutron::Port
378     properties:
379       name: control_virtual_ip
380       network_id: {get_param: NeutronControlPlaneID}
381       fixed_ips:
382         get_param: ControlFixedIPs
383       replacement_policy: AUTO
384   MysqlClusterUniquePart:
385     type: OS::Heat::RandomString
386     properties:
387       length: 10
388   MysqlRootPassword:
389     type: OS::Heat::RandomString
390     properties:
391       length: 10
392   PublicVirtualIP:
393     type: OS::Neutron::Port
394     properties:
395       name: public_virtual_ip
396       network: {get_param: PublicVirtualNetwork}
397       fixed_ips:
398         get_param: PublicVirtualFixedIPs
399       replacement_policy: AUTO
400   RabbitCookie:
401     type: OS::Heat::RandomString
402     properties:
403       length: 20
404       salt:
405         get_param: RabbitCookieSalt
406   NovaCompute0Deployment:
407     type: FileInclude
408     Path: nova-compute-instance.yaml
409     SubKey: resources.NovaCompute0Deployment
410     parameters:
411         DefaultSignalTransport:
412             get_param: DefaultSignalTransport
413         NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
414         KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
415         NeutronHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
416         GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
417         RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
418         NovaDSN:
419           Fn::Join:
420             - ''
421             - - mysql://nova:unset@
422               - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
423               - /nova
424         NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
425         CeilometerDSN:
426           Fn::Join:
427             - ''
428             - - mysql://ceilometer:unset@
429               - *compute_database_host
430               - /ceilometer
431         NeutronDSN:
432           Fn::Join:
433             - ''
434             - - mysql://neutron:unset@
435               - *compute_database_host
436               - /ovs_neutron
437         NeutronNetworkType:
438             get_param: NeutronNetworkType
439         NeutronTunnelTypes:
440             get_param: NeutronTunnelTypes
441         NeutronEnableTunnelling: "True"
442         NeutronFlatNetworks:
443             get_param: NeutronFlatNetworks
444         NeutronNetworkVLANRanges:
445             get_param: NeutronNetworkVLANRanges
446         NeutronPhysicalBridge:
447             get_param: HypervisorNeutronPhysicalBridge
448         NeutronPublicInterface:
449             get_param: HypervisorNeutronPublicInterface
450         NeutronBridgeMappings:
451             get_param: NeutronBridgeMappings
452   NovaCompute0AllNodesDeployment:
453     type: FileInclude
454     Path: nova-compute-instance.yaml
455     SubKey: resources.NovaCompute0AllNodesDeployment
456     parameters:
457         AllNodesConfig: {get_resource: allNodesConfig}
458   NovaCompute0:
459     type: FileInclude
460     Path: nova-compute-instance.yaml
461     SubKey: resources.NovaCompute0
462   NovaCompute0Passthrough:
463     type: FileInclude
464     Path: nova-compute-instance.yaml
465     SubKey: resources.NovaCompute0Passthrough
466     parameters:
467         passthrough_config: {get_param: ExtraConfig}
468   NovaCompute0PassthroughSpecific:
469     type: FileInclude
470     Path: nova-compute-instance.yaml
471     SubKey: resources.NovaCompute0PassthroughSpecific
472     parameters:
473         passthrough_config_specific: {get_param: NovaComputeExtraConfig}
474   controllerConfig:
475     type: OS::Heat::StructuredConfig
476     properties:
477       group: os-apply-config
478       config:
479         admin-password:
480           get_param: AdminPassword
481         admin-token:
482           get_param: AdminToken
483         bootstack:
484           public_interface_ip:
485             get_param: NeutronPublicInterfaceIP
486         bootstrap_host:
487           bootstrap_nodeid:
488             Fn::Select:
489             - 0
490             - Fn::Select:
491               - 0
492               - Merge::Map:
493                   controller0:
494                   - get_attr:
495                     - controller0
496                     - name
497           nodeid: {get_input: bootstack_nodeid}
498         database:
499           host: &database_host
500             {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
501         cinder:
502           db:
503             Fn::Join:
504               - ''
505               - - mysql://cinder:unset@
506                 - *database_host
507                 - /cinder
508           debug: {get_param: Debug}
509           volume_size_mb:
510             get_param: CinderLVMLoopDeviceSize
511           service-password:
512             get_param: CinderPassword
513           iscsi-helper:
514             get_param: CinderISCSIHelper
515         controller-address:
516           get_input: controller_host
517         corosync:
518           bindnetaddr: {get_input: controller_host}
519           mcastport: 5577
520           nodes:
521             Merge::Map:
522               controller0:
523                 ip: {get_attr: [controller0, networks, ctlplane, 0]}
524         pacemaker:
525           stonith_enabled : false
526           recheck_interval : 5
527           quorum_policy : ignore
528         db-password: unset
529         glance:
530           registry:
531             host: {get_input: controller_virtual_ip}
532           backend: swift
533           db:
534             Fn::Join:
535               - ''
536               - - mysql://glance:unset@
537                 - *database_host
538                 - /glance
539           debug: {get_param: Debug}
540           host:
541             get_input: controller_virtual_ip
542           port:
543             get_param: GlancePort
544           protocol:
545             get_param: GlanceProtocol
546           service-password:
547             get_param: GlancePassword
548           swift-store-user: service:glance
549           swift-store-key:
550             get_param: GlancePassword
551           notifier-strategy:
552             get_param: GlanceNotifierStrategy
553           log-file:
554             get_param: GlanceLogFile
555         heat:
556           admin_password:
557             get_param: HeatPassword
558           admin_tenant_name: service
559           admin_user: heat
560           auth_encryption_key: unset___________
561           db:
562             Fn::Join:
563               - ''
564               - - mysql://heat:unset@
565                 - *database_host
566                 - /heat
567           debug: {get_param: Debug}
568           stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
569           watch_server_url: {get_input: heat.watch_server_url}
570           metadata_server_url: {get_input: heat.metadata_server_url}
571           waitcondition_server_url: {get_input: heat.waitcondition_server_url}
572         horizon:
573           caches:
574             memcached:
575               nodes:
576                 Merge::Map:
577                   controller0:
578                     {get_attr: [controller0, name]}
579         keystone:
580           db:
581             Fn::Join:
582               - ''
583               - - mysql://keystone:unset@
584                 - *database_host
585                 - /keystone
586           debug: {get_param: Debug}
587           host:
588             get_input: controller_virtual_ip
589           ca_certificate: {get_param: KeystoneCACertificate}
590           signing_key: {get_param: KeystoneSigningKey}
591           signing_certificate: {get_param: KeystoneSigningCertificate}
592           ssl:
593               certificate: {get_param: KeystoneSSLCertificate}
594               certificate_key: {get_param: KeystoneSSLCertificateKey}
595         mysql:
596           innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
597           local_bind: true
598           root-password: {get_resource: MysqlRootPassword}
599           nodes:
600             Merge::Map:
601               controller0:
602                 ip: {get_attr: [controller0, networks, ctlplane, 0]}
603           cluster_name:
604             Fn::Join:
605               - '-'
606               - - 'tripleo'
607                 - {get_resource: MysqlClusterUniquePart}
608         neutron:
609           debug: {get_param: Debug}
610           flat-networks: {get_param: NeutronFlatNetworks}
611           host: {get_input: controller_virtual_ip}
612           metadata_proxy_shared_secret: unset
613           ovs:
614             enable_tunneling: 'True'
615             local_ip:
616               get_input: controller_host
617             network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
618             bridge_mappings: {get_param: NeutronBridgeMappings}
619             public_interface:
620               get_param: NeutronPublicInterface
621             public_interface_raw_device:
622               get_param: NeutronPublicInterfaceRawDevice
623             public_interface_route:
624               get_param: NeutronPublicInterfaceDefaultRoute
625             public_interface_tag:
626               get_param: NeutronPublicInterfaceTag
627             physical_bridge: br-ex
628             tenant_network_type:
629               get_param: NeutronNetworkType
630             tunnel_types:
631               get_param: NeutronTunnelTypes
632           ovs_db:
633             Fn::Join:
634               - ''
635               - - mysql://neutron:unset@
636                 - *database_host
637                 - /ovs_neutron?charset=utf8
638           service-password:
639             get_param: NeutronPassword
640           dnsmasq-options:
641             get_param: NeutronDnsmasqOptions
642         ceilometer:
643           db:
644             Fn::Join:
645               - ''
646               - - mysql://ceilometer:unset@
647                 - *database_host
648                 - /ceilometer
649           debug: {get_param: Debug}
650           metering_secret: {get_param: CeilometerMeteringSecret}
651           service-password:
652             get_param: CeilometerPassword
653         snmpd:
654           export_MIB: UCD-SNMP-MIB
655           readonly_user_name:
656             get_param: SnmpdReadonlyUserName
657           readonly_user_password:
658             get_param: SnmpdReadonlyUserPassword
659         nova:
660           compute_driver: libvirt.LibvirtDriver
661           db:
662             Fn::Join:
663               - ''
664               - - mysql://nova:unset@
665                 - *database_host
666                 - /nova
667           default_floating_pool:
668             ext-net
669           host: {get_input: controller_virtual_ip}
670           metadata-proxy: true
671           service-password:
672             get_param: NovaPassword
673         rabbit:
674           host: {get_input: controller_virtual_ip}
675           username:
676             get_param: RabbitUserName
677           password:
678             get_param: RabbitPassword
679           cookie:
680             get_attr:
681             - RabbitCookie
682             - value
683           rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
684           rabbit_port: {get_param: RabbitClientPort}
685         ntp:
686           servers:
687               - {server: {get_param: NtpServer}, fudge: "stratum 0"}
688         virtual_interfaces:
689           instances:
690             - vrrp_instance_name: VI_CONTROL
691               virtual_router_id: 51
692               keepalive_interface:
693                 get_param: ControlVirtualInterface
694               priority: 101
695               virtual_ips:
696               - ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
697                 interface:
698                   get_param: ControlVirtualInterface
699             - vrrp_instance_name: VI_PUBLIC
700               virtual_router_id: 52
701               keepalive_interface:
702                 get_param: PublicVirtualInterface
703               priority: 101
704               virtual_ips:
705               - ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
706                 interface:
707                   get_param: PublicVirtualInterface
708           vrrp_sync_groups:
709             - name: VG1
710               members:
711                 - VI_CONTROL
712                 - VI_PUBLIC
713         keepalived:
714           keepalive_interface:
715             get_param: PublicVirtualInterface
716           priority: 101
717         virtual_ips:
718             -
719               ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
720               interface:
721                 get_param: ControlVirtualInterface
722             -
723               ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
724               interface:
725                 get_param: PublicVirtualInterface
726         haproxy:
727           nodes:
728             Merge::Map:
729               controller0:
730                 ip: {get_attr: [controller0, networks, ctlplane, 0]}
731                 name: {get_attr: [controller0, name]}
732           net_binds:
733             - &control_vip {ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}}
734             - &public_vip {ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}}
735           services:
736             - name: keystone_admin
737               port: 35357
738             - name: keystone_public
739               port: 5000
740             - name: horizon
741               port: 80
742             - name: neutron
743               port: 9696
744             - name: cinder
745               port: 8776
746             - name: glance_api
747               port: 9292
748             - name: glance_registry
749               port: 9191
750             - name: heat_api
751               port: 8004
752             - name: heat_cloudwatch
753               port: 8003
754             - name: heat_cfn
755               port: 8000
756             - name: mysql
757               port: 3306
758               net_binds:
759                 - *control_vip
760               extra_server_params:
761                 - backup
762               options:
763                 - timeout client 0
764                 - timeout server 0
765             - name: nova_ec2
766               port: 8773
767             - name: nova_osapi
768               port: 8774
769             - name: nova_metadata
770               port: 8775
771             - name: nova_novncproxy
772               port: 6080
773             - name: ceilometer
774               port: 8777
775             - name: swift_proxy_server
776               port: 8080
777             - name: rabbitmq
778               port: 5672
779               net_binds:
780                 - *control_vip
781               options:
782                 - timeout client 0
783                 - timeout server 0
784   controllerPassthrough:
785     type: OS::Heat::StructuredConfig
786     properties:
787       group: os-apply-config
788       config: {get_input: passthrough_config}
789   controllerPassthroughSpecific:
790     type: OS::Heat::StructuredConfig
791     properties:
792       group: os-apply-config
793       config: {get_input: passthrough_config_specific}
794   controller0:
795     type: OS::Nova::Server
796     properties:
797       image:
798         get_param: controllerImage
799       image_update_policy:
800         get_param: ImageUpdatePolicy
801       flavor:
802         get_param: OvercloudControlFlavor
803       key_name:
804         get_param: KeyName
805       networks:
806         - network: ctlplane
807       user_data_format: SOFTWARE_CONFIG
808   controller0AllNodesDeployment:
809     depends_on: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0PassthroughSpecific]
810     type: OS::Heat::StructuredDeployment
811     properties:
812       signal_transport: {get_param: DefaultSignalTransport}
813       config: {get_resource: allNodesConfig}
814       server: {get_resource: controller0}
815   controller0Deployment:
816     type: OS::Heat::StructuredDeployment
817     properties:
818       signal_transport: NO_SIGNAL
819       config: {get_resource: controllerConfig}
820       server: {get_resource: controller0}
821       input_values:
822         bootstack_nodeid: {get_attr: [controller0, name]}
823         controller_host: {get_attr: [controller0, networks, ctlplane, 0]}
824         controller_virtual_ip:
825           {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
826         heat.watch_server_url:
827           Fn::Join:
828             - ''
829             - - 'http://'
830               - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
831               - ':8003'
832         heat.metadata_server_url:
833           Fn::Join:
834             - ''
835             - - 'http://'
836               - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
837               - ':8000'
838         heat.waitcondition_server_url:
839           Fn::Join:
840             - ''
841             - - 'http://'
842               - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
843               - ':8000/v1/waitcondition'
844   allNodesConfig:
845     type: OS::Heat::StructuredConfig
846     properties:
847       config:
848         completion-signal: {get_input: deploy_signal_id}
849         hosts:
850           Fn::Join:
851           - "\n"
852           - - Fn::Join:
853               - "\n"
854               - Merge::Map:
855                   NovaCompute0:
856                     Fn::Join:
857                     - ' '
858                     - - {get_attr: [NovaCompute0, networks, ctlplane, 0]}
859                       - {get_attr: [NovaCompute0, name]}
860                       - Fn::Join:
861                         - '.'
862                         - - {get_attr: [NovaCompute0, name]}
863                           - 'novalocal'
864             - Fn::Join:
865               - "\n"
866               - Merge::Map:
867                   BlockStorage0:
868                     Fn::Join:
869                     - ' '
870                     - - {get_attr: [BlockStorage0, networks, ctlplane, 0]}
871                       - {get_attr: [BlockStorage0, name]}
872                       - Fn::Join:
873                         - '.'
874                         - - {get_attr: [BlockStorage0, name]}
875                           - 'novalocal'
876             - Fn::Join:
877               - "\n"
878               - Merge::Map:
879                   SwiftStorage0:
880                     Fn::Join:
881                     - ' '
882                     - - {get_attr: [SwiftStorage0, networks, ctlplane, 0]}
883                       - {get_attr: [SwiftStorage0, name]}
884                       - Fn::Join:
885                         - '.'
886                         - - {get_attr: [SwiftStorage0, name]}
887                           - 'novalocal'
888             - Fn::Join:
889               - "\n"
890               - Merge::Map:
891                   controller0:
892                     Fn::Join:
893                     - ' '
894                     - - {get_attr: [controller0, networks, ctlplane, 0]}
895                       - {get_attr: [controller0, name]}
896                       - Fn::Join:
897                         - '.'
898                         - - {get_attr: [controller0, name]}
899                           - 'novalocal'
900                       - {get_param: CloudName}
901         rabbit:
902           nodes:
903             Fn::Join:
904               - ','
905               - Merge::Map:
906                   controller0:
907                     {get_attr: [controller0, name]}
908   controller0SSLDeployment:
909     type: OS::Heat::StructuredDeployment
910     properties:
911       config: {get_resource: SSLConfig}
912       server: {get_resource: controller0}
913       signal_transport: NO_SIGNAL
914       input_values:
915         controller_host: {get_attr: [controller0, networks, ctlplane, 0]}
916         ssl_certificate: {get_param: SSLCertificate}
917         ssl_key: {get_param: SSLKey}
918         ssl_ca_certificate: {get_param: SSLCACertificate}
919   controller0Passthrough:
920     type: OS::Heat::StructuredDeployment
921     properties:
922       config: {get_resource: controllerPassthrough}
923       server: {get_resource: controller0}
924       signal_transport: NO_SIGNAL
925       input_values:
926         passthrough_config: {get_param: ExtraConfig}
927   controller0PassthroughSpecific:
928     depends_on: [controller0Passthrough]
929     type: OS::Heat::StructuredDeployment
930     properties:
931       config: {get_resource: controllerPassthroughSpecific}
932       server: {get_resource: controller0}
933       signal_transport: NO_SIGNAL
934       input_values:
935         passthrough_config_specific: {get_param: controllerExtraConfig}
936 outputs:
937   KeystoneURL:
938     description: URL for the Overcloud Keystone service
939     value:
940       Fn::Join:
941       - ''
942       - - http://
943         - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
944         - :5000/v2.0/