Overcloud: bump HOT version to 2015-04-30
[apex-tripleo-heat-templates.git] / puppet / controller-puppet.yaml
1 heat_template_version: 2015-04-30
2
3 description: >
4   OpenStack controller node configured by Puppet.
5
6 parameters:
7   AdminPassword:
8     default: unset
9     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
10     type: string
11     hidden: true
12   AdminToken:
13     default: unset
14     description: The keystone auth secret.
15     type: string
16     hidden: true
17   CeilometerBackend:
18     default: 'mongodb'
19     description: The ceilometer backend type.
20     type: string
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   CinderEnableIscsiBackend:
32     default: true
33     description: Whether to enable or not the Iscsi backend for Cinder
34     type: boolean
35   CinderEnableRbdBackend:
36     default: false
37     description: Whether to enable or not the Rbd backend for Cinder
38     type: boolean
39   CinderISCSIHelper:
40     default: tgtadm
41     description: The iSCSI helper to use with cinder.
42     type: string
43   CinderLVMLoopDeviceSize:
44     default: 5000
45     description: The size of the loopback file used by the cinder LVM driver.
46     type: number
47   CinderPassword:
48     default: unset
49     description: The password for the cinder service account, used by cinder-api.
50     type: string
51     hidden: true
52   CloudName:
53     default: ''
54     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
55     type: string
56   ControllerExtraConfig:
57     default: {}
58     description: |
59       Controller specific configuration to inject into the cluster. Same
60       structure as ExtraConfig.
61     type: json
62   ControlVirtualInterface:
63     default: 'br-ex'
64     description: Interface where virtual ip will be assigned.
65     type: string
66   Debug:
67     default: ''
68     description: Set to True to enable debugging on all services.
69     type: string
70   EnableGalera:
71     default: true
72     description: Whether to use Galera instead of regular MariaDB.
73     type: boolean
74   EnablePacemaker:
75     default: false
76     description: If enabled services will be monitored by Pacemaker; it
77       will manage VIPs as well, in place of Keepalived.
78     type: boolean
79   EnableCephStorage:
80     default: false
81     description: Whether to deploy Ceph Storage (OSD) on the Controller
82     type: boolean
83   EnableSwiftStorage:
84     default: true
85     description: Whether to enable Swift Storage on the Controller
86     type: boolean
87   ExtraConfig:
88     default: {}
89     description: |
90       Additional configuration to inject into the cluster. The JSON should have
91       the following structure:
92         {"FILEKEY":
93           {"config":
94             [{"section": "SECTIONNAME",
95               "values":
96                 [{"option": "OPTIONNAME",
97                   "value": "VALUENAME"
98                  }
99                 ]
100              }
101             ]
102           }
103         }
104       For instance:
105         {"nova":
106           {"config":
107             [{"section": "default",
108               "values":
109                 [{"option": "compute_manager",
110                   "value": "ironic.nova.compute.manager.ClusterComputeManager"
111                  }
112                 ]
113              },
114              {"section": "cells",
115               "values":
116                 [{"option": "driver",
117                   "value": "nova.cells.rpc_driver.CellsRPCDriver"
118                  }
119                 ]
120              }
121             ]
122           }
123         }
124     type: json
125   Flavor:
126     description: Flavor for control nodes to request when deploying.
127     type: string
128     constraints:
129       - custom_constraint: nova.flavor
130   GlanceNotifierStrategy:
131     description: Strategy to use for Glance notification queue
132     type: string
133     default: noop
134   GlanceLogFile:
135     description: The filepath of the file to use for logging messages from Glance.
136     type: string
137     default: ''
138   GlancePassword:
139     default: unset
140     description: The password for the glance service account, used by the glance services.
141     type: string
142     hidden: true
143   GlancePort:
144     default: "9292"
145     description: Glance port.
146     type: string
147   GlanceProtocol:
148     default: http
149     description: Protocol to use when connecting to glance, set to https for SSL.
150     type: string
151   GlanceBackend:
152     default: swift
153     description: The short name of the Glance backend to use. Should be one
154       of swift, rbd, or file
155     type: string
156     constraints:
157     - allowed_values: ['swift', 'file', 'rbd']
158   HeatPassword:
159     default: unset
160     description: The password for the Heat service account, used by the Heat services.
161     type: string
162     hidden: true
163   HeatStackDomainAdminPassword:
164     description: Password for heat_domain_admin user.
165     type: string
166     default: ''
167     hidden: true
168   HeatAuthEncryptionKey:
169     description: Auth encryption key for heat-engine
170     type: string
171   HorizonSecret:
172     description: Secret key for Django
173     type: string
174   Image:
175     type: string
176     default: overcloud-control
177     constraints:
178       - custom_constraint: glance.image
179   ImageUpdatePolicy:
180     default: 'REBUILD_PRESERVE_EPHEMERAL'
181     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
182     type: string
183   KeyName:
184     default: default
185     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
186     type: string
187     constraints:
188       - custom_constraint: nova.keypair
189   KeystoneCACertificate:
190     default: ''
191     description: Keystone self-signed certificate authority certificate.
192     type: string
193   KeystoneSigningCertificate:
194     default: ''
195     description: Keystone certificate for verifying token validity.
196     type: string
197   KeystoneSigningKey:
198     default: ''
199     description: Keystone key for signing tokens.
200     type: string
201     hidden: true
202   KeystoneSSLCertificate:
203     default: ''
204     description: Keystone certificate for verifying token validity.
205     type: string
206   KeystoneSSLCertificateKey:
207     default: ''
208     description: Keystone key for signing tokens.
209     type: string
210     hidden: true
211   MysqlClusterUniquePart:
212     description: A unique identifier of the MySQL cluster the controller is in.
213     type: string
214     default: 'unset'  # Has to be here because of the ignored empty value bug
215     # Drop the validation: https://bugs.launchpad.net/tripleo/+bug/1405446
216     # constraints:
217     # - length: {min: 4, max: 10}
218   MysqlInnodbBufferPoolSize:
219     description: >
220         Specifies the size of the buffer pool in megabytes. Setting to
221         zero should be interpreted as "no value" and will defer to the
222         lower level default.
223     type: number
224     default: 0
225   MysqlRootPassword:
226     type: string
227     hidden: true
228     default: ''  # Has to be here because of the ignored empty value bug
229   MysqlClustercheckPassword:
230     type: string
231     hidden: true
232     default: ''  # Has to be here because of the ignored empty value bug
233   NeutronBridgeMappings:
234     description: >
235       The OVS logical->physical bridge mappings to use. See the Neutron
236       documentation for details. Defaults to mapping br-ex - the external
237       bridge on hosts - to a physical name 'datacentre' which can be used
238       to create provider networks (and we use this for the default floating
239       network) - if changing this either use different post-install network
240       scripts or be sure to keep 'datacentre' as a mapping network name.
241     type: string
242     default: "datacentre:br-ex"
243   NeutronDnsmasqOptions:
244     default: 'dhcp-option-force=26,1400'
245     description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead.
246     type: string
247   NeutronAgentMode:
248     default: 'dvr_snat'
249     description: Agent mode for the neutron-l3-agent on the controller hosts
250     type: string
251   NeutronL3HA: #FIXME this isn't wired in
252     default: 'False'
253     description: Whether to enable l3-agent HA
254     type: string
255   NeutronDVR:
256     default: 'False'
257     description: Whether to configure Neutron Distributed Virtual Routers
258     type: string
259   NeutronMetadataProxySharedSecret:
260     default: 'unset'
261     description: Shared secret to prevent spoofing
262     type: string
263   NeutronMechanismDrivers:
264     default: 'openvswitch'
265     description: |
266         The mechanism drivers for the Neutron tenant network. To specify multiple
267         values, use a comma separated string, like so: 'openvswitch,l2_population'
268     type: string
269   NeutronAllowL3AgentFailover:
270     default: 'True'
271     description: Allow automatic l3-agent failover
272     type: string
273   NeutronEnableTunnelling:
274     type: string
275     default: "True"
276   NeutronFlatNetworks:
277     type: string
278     default: 'datacentre'
279     description: If set, flat networks to configure in neutron plugins.
280   NeutronL3HA:
281     default: 'False'
282     description: Whether to enable l3-agent HA
283     type: string
284   NeutronNetworkType:
285     default: 'gre'
286     description: The tenant network type for Neutron, either gre or vxlan.
287     type: string
288   NeutronNetworkVLANRanges:
289     default: 'datacentre'
290     description: >
291       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
292       Neutron documentation for permitted values. Defaults to permitting any
293       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
294     type: string
295   NeutronPassword:
296     default: unset
297     description: The password for the neutron service account, used by neutron agents.
298     type: string
299     hidden: true
300   NeutronPublicInterface:
301     default: nic1
302     description: What interface to bridge onto br-ex for network nodes.
303     type: string
304   NeutronPublicInterfaceTag:
305     default: ''
306     description: >
307       VLAN tag for creating a public VLAN. The tag will be used to
308       create an access port on the exterior bridge for each control plane node,
309       and that port will be given the IP address returned by neutron from the
310       public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
311       overcloud.yaml to include the deployment of VLAN ports to the control
312       plane.
313     type: string
314   NeutronPublicInterfaceDefaultRoute:
315     default: ''
316     description: A custom default route for the NeutronPublicInterface.
317     type: string
318   NeutronPublicInterfaceIP:
319     default: ''
320     description: A custom IP address to put onto the NeutronPublicInterface.
321     type: string
322   NeutronPublicInterfaceRawDevice:
323     default: ''
324     description: If set, the public interface is a vlan with this device as the raw device.
325     type: string
326   NeutronTunnelTypes:
327     default: 'gre'
328     description: |
329         The tunnel types for the Neutron tenant network. To specify multiple
330         values, use a comma separated string, like so: 'gre,vxlan'
331     type: string
332   NovaPassword:
333     default: unset
334     description: The password for the nova service account, used by nova-api.
335     type: string
336     hidden: true
337   NtpServer:
338     type: string
339     default: ''
340   PcsdPassword:
341     type: string
342     description: The password for the 'pcsd' user.
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   PublicVirtualIP:
350     type: string
351     default: ''  # Has to be here because of the ignored empty value bug
352   RabbitCookie:
353     type: string
354     default: ''  # Has to be here because of the ignored empty value bug
355     hidden: true
356   RabbitPassword:
357     default: guest
358     description: The password for RabbitMQ
359     type: string
360     hidden: true
361   RabbitUserName:
362     default: guest
363     description: The username for RabbitMQ
364     type: string
365   RabbitClientUseSSL:
366     default: false
367     description: >
368         Rabbit client subscriber parameter to specify
369         an SSL connection to the RabbitMQ host.
370     type: string
371   RabbitClientPort:
372     default: 5672
373     description: Set rabbit subscriber port, change this if using SSL
374     type: number
375   SnmpdReadonlyUserName:
376     default: ro_snmp_user
377     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
378     type: string
379   SnmpdReadonlyUserPassword:
380     default: unset
381     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
382     type: string
383     hidden: true
384   SSLCACertificate:
385     default: ''
386     description: If set, the contents of an SSL certificate authority file.
387     type: string
388   SSLCertificate:
389     default: ''
390     description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
391     type: string
392     hidden: true
393   SSLKey:
394     default: ''
395     description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
396     type: string
397     hidden: true
398   SwiftHashSuffix:
399     default: unset
400     description: A random string to be used as a salt when hashing to determine mappings
401       in the ring.
402     hidden: true
403     type: string
404   SwiftMountCheck:
405     default: 'false'
406     description: Value of mount_check in Swift account/container/object -server.conf
407     type: boolean
408   SwiftMinPartHours:
409     type: number
410     default: 1
411     description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
412   SwiftPartPower:
413     default: 10
414     description: Partition Power to use when building Swift rings
415     type: number
416   SwiftPassword:
417     default: unset
418     description: The password for the swift service account, used by the swift proxy
419       services.
420     hidden: true
421     type: string
422   SwiftReplicas:
423     type: number
424     default: 3
425     description: How many replicas to use in the swift rings.
426   VirtualIP:
427     type: string
428     default: ''  # Has to be here because of the ignored empty value bug
429   EnablePackageInstall:
430     default: 'false'
431     description: Set to true to enable package installation via Puppet
432     type: boolean
433
434 resources:
435
436   Controller:
437     type: OS::Nova::Server
438     properties:
439       image: {get_param: Image}
440       image_update_policy: {get_param: ImageUpdatePolicy}
441       flavor: {get_param: Flavor}
442       key_name: {get_param: KeyName}
443       networks:
444         - network: ctlplane
445       user_data_format: SOFTWARE_CONFIG
446       user_data: {get_resource: NodeUserData}
447
448   NodeUserData:
449     type: OS::TripleO::NodeUserData
450
451   NetworkConfig:
452     type: OS::TripleO::Controller::Net::SoftwareConfig
453
454   NetworkDeployment:
455     type: OS::TripleO::SoftwareDeployment
456     properties:
457       signal_transport: NO_SIGNAL
458       config: {get_attr: [NetworkConfig, config_id]}
459       server: {get_resource: Controller}
460       input_values:
461         bridge_name: br-ex
462         interface_name: {get_param: NeutronPublicInterface}
463
464   ControllerDeployment:
465     type: OS::TripleO::SoftwareDeployment
466     properties:
467       signal_transport: NO_SIGNAL
468       config: {get_resource: ControllerConfig}
469       server: {get_resource: Controller}
470       input_values:
471         bootstack_nodeid: {get_attr: [Controller, name]}
472         controller_host: {get_attr: [Controller, networks, ctlplane, 0]}
473         controller_virtual_ip: {get_param: VirtualIP}
474         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
475         heat.watch_server_url:
476           list_join:
477             - ''
478             - - 'http://'
479               - {get_param: VirtualIP}
480               - ':8003'
481         heat.metadata_server_url:
482           list_join:
483             - ''
484             - - 'http://'
485               - {get_param: VirtualIP}
486               - ':8000'
487         heat.waitcondition_server_url:
488           list_join:
489             - ''
490             - - 'http://'
491               - {get_param: VirtualIP}
492               - ':8000/v1/waitcondition'
493         heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
494         horizon_secret: {get_param: HorizonSecret}
495         admin_password: {get_param: AdminPassword}
496         admin_token: {get_param: AdminToken}
497         neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
498         debug: {get_param: Debug}
499         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
500         cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
501         cinder_password: {get_param: CinderPassword}
502         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
503         cinder_iscsi_helper: {get_param: CinderISCSIHelper}
504         cinder_dsn:
505           list_join:
506             - ''
507             - - 'mysql://cinder:unset@'
508               - {get_param: VirtualIP}
509               - '/cinder'
510         glance_port: {get_param: GlancePort}
511         glance_protocol: {get_param: GlanceProtocol}
512         glance_password: {get_param: GlancePassword}
513         glance_backend: {get_param: GlanceBackend}
514         glance_swift_store_auth_address: {list_join: ['', ['http://', {get_param: VirtualIP} , ':5000/v2.0']]}
515         glance_notifier_strategy: {get_param: GlanceNotifierStrategy}
516         glance_log_file: {get_param: GlanceLogFile}
517         glance_dsn:
518           list_join:
519             - ''
520             - - 'mysql://glance:unset@'
521               - {get_param: VirtualIP}
522               - '/glance'
523         heat_password: {get_param: HeatPassword}
524         heat_stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
525         heat_dsn:
526           list_join:
527             - ''
528             - - 'mysql://heat:unset@'
529               - {get_param: VirtualIP}
530               - '/heat'
531         keystone_ca_certificate: {get_param: KeystoneCACertificate}
532         keystone_signing_key: {get_param: KeystoneSigningKey}
533         keystone_signing_certificate: {get_param: KeystoneSigningCertificate}
534         keystone_ssl_certificate: {get_param: KeystoneSSLCertificate}
535         keystone_ssl_certificate_key: {get_param: KeystoneSSLCertificateKey}
536         keystone_dsn:
537           list_join:
538             - ''
539             - - 'mysql://keystone:unset@'
540               - {get_param: VirtualIP}
541               - '/keystone'
542         keystone_identity_uri:
543           list_join:
544             - ''
545             - - 'http://'
546               - {get_param: VirtualIP}
547               - ':35357/'
548         keystone_auth_uri:
549           list_join:
550             - ''
551             - - 'http://'
552               - {get_param: VirtualIP}
553               - ':5000/v2.0/'
554         enable_galera: {get_param: EnableGalera}
555         enable_ceph_storage: {get_param: EnableCephStorage}
556         enable_swift_storage: {get_param: EnableSwiftStorage}
557         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
558         mysql_root_password: {get_param: MysqlRootPassword}
559         mysql_clustercheck_password: {get_param: MysqlClustercheckPassword}
560         mysql_cluster_name:
561           str_replace:
562             template: tripleo-CLUSTER
563             params:
564               CLUSTER: {get_param: MysqlClusterUniquePart}
565         neutron_flat_networks: {get_param: NeutronFlatNetworks}
566         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
567         neutron_agent_mode: {get_param: NeutronAgentMode}
568         neutron_router_distributed: {get_param: NeutronDVR}
569         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
570         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
571         neutron_l3_ha: {get_param: NeutronL3HA}
572         neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
573         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
574         neutron_public_interface: {get_param: NeutronPublicInterface}
575         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
576         neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
577         neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
578         neutron_tenant_network_type: {get_param: NeutronNetworkType}
579         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
580         neutron_password: {get_param: NeutronPassword}
581         neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
582         neutron_dsn:
583           list_join:
584             - ''
585             - - 'mysql://neutron:unset@'
586               - {get_param: VirtualIP}
587               - '/ovs_neutron?charset=utf8'
588         neutron_url:
589           list_join:
590             - ''
591             - - 'http://'
592               - {get_param: VirtualIP}
593               - ':9696'
594         neutron_admin_auth_url:
595           list_join:
596             - ''
597             - - 'http://'
598               - {get_param: VirtualIP}
599               - ':35357/v2.0'
600         ceilometer_backend: {get_param: CeilometerBackend}
601         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
602         ceilometer_password: {get_param: CeilometerPassword}
603         ceilometer_dsn:
604           list_join:
605             - ''
606             - - 'mysql://ceilometer:unset@'
607               - {get_param: VirtualIP}
608               - '/ceilometer'
609         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
610         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
611         nova_password: {get_param: NovaPassword}
612         nova_dsn:
613           list_join:
614             - ''
615             - - 'mysql://nova:unset@'
616               - {get_param: VirtualIP}
617               - '/nova'
618         pcsd_password: {get_param: PcsdPassword}
619         rabbit_hosts:
620           str_replace:
621             template: '["host"]'
622             params:
623               host: {get_param: VirtualIP}
624         rabbit_username: {get_param: RabbitUserName}
625         rabbit_password: {get_param: RabbitPassword}
626         rabbit_cookie: {get_param: RabbitCookie}
627         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
628         rabbit_client_port: {get_param: RabbitClientPort}
629         ntp_servers:
630           str_replace:
631             template: '["server"]'
632             params:
633               server: {get_param: NtpServer}
634         control_virtual_interface: {get_param: ControlVirtualInterface}
635         public_virtual_interface: {get_param: PublicVirtualInterface}
636         public_virtual_ip: {get_param: PublicVirtualIP}
637         swift_hash_suffix: {get_param: SwiftHashSuffix}
638         swift_password: {get_param: SwiftPassword}
639         swift_part_power: {get_param: SwiftPartPower}
640         swift_replicas: {get_param: SwiftReplicas}
641         swift_min_part_hours: {get_param: SwiftMinPartHours}
642         swift_mount_check: {get_param: SwiftMountCheck}
643         enable_package_install: {get_param: EnablePackageInstall}
644
645   # Map heat metadata into hiera datafiles
646   ControllerConfig:
647     type: OS::Heat::StructuredConfig
648     properties:
649       group: os-apply-config
650       config:
651         hiera:
652           hierarchy:
653             - heat_config_%{::deploy_config_name}
654             - controller
655             - object
656             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
657             - ceph_cluster # provided by CephClusterConfig
658             - ceph
659             - bootstrap_node # provided by BootstrapNodeConfig
660             - all_nodes # provided by allNodesConfig
661             - '"%{::osfamily}"'
662             - common
663           datafiles:
664             common:
665               raw_data: {get_file: hieradata/common.yaml}
666             ceph:
667               raw_data: {get_file: hieradata/ceph.yaml}
668             object:
669               raw_data: {get_file: hieradata/object.yaml}
670             controller:
671               raw_data: {get_file: hieradata/controller.yaml}
672               mapped_data: # data supplied directly to this deployment configuration, etc
673                 bootstack_nodeid: {get_input: bootstack_nodeid}
674                 controller_host: {get_input: controller_host} #local-ipv4
675
676                 # Pacemaker
677                 hacluster_pwd: {get_input: pcsd_password}
678
679                 # Swift
680                 swift::proxy::proxy_local_net_ip: {get_input: controller_host}
681                 swift::proxy::authtoken::auth_uri: {get_input: keystone_auth_uri}
682                 swift::proxy::authtoken::identity_uri: {get_input: keystone_identity_uri}
683                 swift::storage::all::storage_local_net_ip: {get_input: controller_host}
684                 swift::swift_hash_suffix: {get_input: swift_hash_suffix}
685                 swift::proxy::authtoken::admin_password: {get_input: swift_password}
686                 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
687                 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
688                 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
689                 swift_mount_check: {get_input: swift_mount_check}
690
691                 # NOTE(dprince): build_ring support is currently not wired in.
692                 # See: https://review.openstack.org/#/c/109225/
693                 tripleo::ringbuilder::build_ring: True
694
695                 # Cinder
696                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
697                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
698                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
699                 cinder_iscsi_ip_address: {get_input: controller_host}
700                 cinder::database_connection: {get_input: cinder_dsn}
701                 cinder::api::keystone_password: {get_input: cinder_password}
702                 cinder::api::auth_uri: {get_input: keystone_auth_uri}
703                 cinder::api::identity_uri: {get_input: keystone_identity_uri}
704                 cinder::api::bind_host: {get_input: controller_host}
705                 cinder::rabbit_hosts: {get_input: rabbit_hosts}
706                 cinder::rabbit_userid: {get_input: rabbit_username}
707                 cinder::rabbit_password: {get_input: rabbit_password}
708                 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
709                 cinder::rabbit_port: {get_input: rabbit_client_port}
710                 cinder::debug: {get_input: debug}
711                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
712
713                 # Glance
714                 glance::api::bind_port: {get_input: glance_port}
715                 glance::api::bind_host: {get_input: controller_host}
716                 glance::api::auth_uri: {get_input: keystone_auth_uri}
717                 glance::api::identity_uri: {get_input: keystone_identity_uri}
718                 glance::api::registry_host: {get_input: controller_host}
719                 glance::api::keystone_password: {get_input: glance_password}
720                 glance::api::debug: {get_input: debug}
721                 # used to construct glance_api_servers
722                 glance_port: {get_input: glance_port}
723                 glance_protocol: {get_input: glance_protocol}
724                 glance_notifier_strategy: {get_input: glance_notifier_strategy}
725                 glance_log_file: {get_input: glance_log_file}
726                 glance_log_file: {get_input: glance_log_file}
727                 glance::api::database_connection: {get_input: glance_dsn}
728                 glance::registry::keystone_password: {get_input: glance_password}
729                 glance::registry::database_connection: {get_input: glance_dsn}
730                 glance::registry::bind_host: {get_input: controller_host}
731                 glance::registry::auth_uri: {get_input: keystone_auth_uri}
732                 glance::registry::identity_uri: {get_input: keystone_identity_uri}
733                 glance::registry::debug: {get_input: debug}
734                 glance::backend::swift::swift_store_auth_address: {get_input: glance_swift_store_auth_address}
735                 glance::backend::swift::swift_store_user: service:glance
736                 glance::backend::swift::swift_store_key: {get_input: glance_password}
737                 glance_backend: {get_input: glance_backend}
738
739                 # Heat
740                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
741                 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
742                 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
743                 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
744                 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
745                 heat::rabbit_hosts: {get_input: rabbit_hosts}
746                 heat::rabbit_userid: {get_input: rabbit_username}
747                 heat::rabbit_password: {get_input: rabbit_password}
748                 heat::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
749                 heat::rabbit_port: {get_input: rabbit_client_port}
750                 heat::auth_uri: {get_input: keystone_auth_uri}
751                 heat::identity_uri: {get_input: keystone_identity_uri}
752                 heat::keystone_password: {get_input: heat_password}
753                 heat::api::bind_host: {get_input: controller_host}
754                 heat::api_cloudwatch::bind_host: {get_input: controller_host}
755                 heat::api_cfn::bind_host: {get_input: controller_host}
756                 heat::database_connection: {get_input: heat_dsn}
757                 heat::instance_user: heat-admin
758                 heat::debug: {get_input: debug}
759
760                 # Keystone
761                 keystone::admin_token: {get_input: admin_token}
762                 keystone_ca_certificate: {get_input: keystone_ca_certificate}
763                 keystone_signing_key: {get_input: keystone_signing_key}
764                 keystone_signing_certificate: {get_input: keystone_signing_certificate}
765                 keystone_ssl_certificate: {get_input: keystone_ssl_certificate}
766                 keystone_ssl_certificate_key: {get_input: keystone_ssl_certificate_key}
767                 keystone::database_connection: {get_input: keystone_dsn}
768                 keystone::public_bind_host: {get_input: controller_host}
769                 keystone::admin_bind_host: {get_input: controller_host}
770                 keystone::debug: {get_input: debug}
771                 # MongoDB
772                 mongodb::server::bind_ip: {get_input: controller_host}
773                 # MySQL
774                 admin_password: {get_input: admin_password}
775                 enable_galera: {get_input: enable_galera}
776                 enable_ceph_storage: {get_input: enable_ceph_storage}
777                 enable_swift_storage: {get_input: enable_swift_storage}
778                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
779                 mysql::server::root_password: {get_input: mysql_root_password}
780                 mysql_cluster_name: {get_input: mysql_cluster_name}
781                 mysql_clustercheck_password: {get_input: mysql_clustercheck_password}
782
783                 # Neutron
784                 neutron::bind_host: {get_input: controller_host}
785                 neutron::rabbit_hosts: {get_input: rabbit_hosts}
786                 neutron::rabbit_password: {get_input: rabbit_password}
787                 neutron::rabbit_user: {get_input: rabbit_user}
788                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
789                 neutron::rabbit_port: {get_input: rabbit_client_port}
790                 neutron::debug: {get_input: debug}
791                 neutron::server::auth_uri: {get_input: keystone_auth_uri}
792                 neutron::server::identity_uri: {get_input: keystone_identity_uri}
793                 neutron::server::database_connection: {get_input: neutron_dsn}
794                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
795                 neutron::agents::ml2::ovs::local_ip: {get_input: controller_host}
796                 neutron_flat_networks: {get_input: neutron_flat_networks}
797                 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
798                 neutron::agents::metadata::metadata_ip: {get_input: controller_virtual_ip}
799                 neutron_agent_mode: {get_input: neutron_agent_mode}
800                 neutron_router_distributed: {get_input: neutron_router_distributed}
801                 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
802                 neutron_allow_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
803                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
804                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
805                 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
806                 neutron_public_interface: {get_input: neutron_public_interface}
807                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
808                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
809                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
810                 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
811                 neutron_tunnel_types: {get_input: neutron_tunnel_types}
812                 neutron::server::auth_password: {get_input: neutron_password}
813                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
814                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
815                 neutron_dsn: {get_input: neutron_dsn}
816
817                 # Ceilometer
818                 ceilometer_backend: {get_input: ceilometer_backend}
819                 ceilometer_mysql_conn_string: {get_input: ceilometer_dsn}
820                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
821                 ceilometer::rabbit_hosts: {get_input: rabbit_hosts}
822                 ceilometer::rabbit_userid: {get_input: rabbit_username}
823                 ceilometer::rabbit_password: {get_input: rabbit_password}
824                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
825                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
826                 ceilometer::debug: {get_input: debug}
827                 ceilometer::api::host: {get_input: controller_host}
828                 ceilometer::api::keystone_password: {get_input: ceilometer_password}
829                 ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
830                 ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
831                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
832                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
833                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
834
835                 # Nova
836                 nova::rabbit_hosts: {get_input: rabbit_hosts}
837                 nova::rabbit_userid: {get_input: rabbit_username}
838                 nova::rabbit_password: {get_input: rabbit_password}
839                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
840                 nova::rabbit_port: {get_input: rabbit_client_port}
841                 nova::debug: {get_input: debug}
842                 nova::api::auth_uri: {get_input: keystone_auth_uri}
843                 nova::api::identity_uri: {get_input: keystone_identity_uri}
844                 nova::api::api_bind_address: {get_input: controller_host}
845                 nova::api::metadata_listen: {get_input: controller_host}
846                 nova::api::admin_password: {get_input: nova_password}
847                 nova::database_connection: {get_input: nova_dsn}
848                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
849                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
850                 nova::network::neutron::neutron_url: {get_input: neutron_url}
851                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
852
853                 # Horizon
854                 horizon::django_debug: {get_input: debug}
855                 horizon::secret_key: {get_input: horizon_secret}
856                 horizon::bind_address: {get_input: controller_host}
857                 horizon::keystone_url: {get_input: keystone_auth_uri}
858
859                 # Rabbit
860                 rabbitmq::node_ip_address: {get_input: controller_host}
861                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
862                 # Redis
863                 redis::bind: {get_input: controller_host}
864                 # Misc
865                 memcached::listen_ip: {get_input: controller_host}
866                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
867                 ntp::servers: {get_input: ntp_servers}
868                 control_virtual_interface: {get_input: control_virtual_interface}
869                 controller_virtual_ip: {get_input: controller_virtual_ip}
870                 public_virtual_interface: {get_input: public_virtual_interface}
871                 public_virtual_ip: {get_input: public_virtual_ip}
872                 tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
873                 tripleo::loadbalancer::controller_virtual_ip: {get_input: controller_virtual_ip}
874                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
875                 tripleo::loadbalancer::public_virtual_ip: {get_input: public_virtual_ip}
876                 enable_package_install: {get_input: enable_package_install}
877
878 outputs:
879   ip_address:
880     description: IP address of the server in the ctlplane network
881     value: {get_attr: [Controller, networks, ctlplane, 0]}
882   hostname:
883     description: Hostname of the server
884     value: {get_attr: [Controller, name]}
885   corosync_node:
886     description: >
887       Node object in the format {ip: ..., name: ...} format that the corosync
888       element expects
889     value:
890       ip: {get_attr: [Controller, networks, ctlplane, 0]}
891       name: {get_attr: [Controller, name]}
892   hosts_entry:
893     description: >
894       Server's IP address and hostname in the /etc/hosts format
895     value:
896       str_replace:
897         template: IP HOST CLOUDNAME
898         params:
899           IP: {get_attr: [Controller, networks, ctlplane, 0]}
900           HOST: {get_attr: [Controller, name]}
901           CLOUDNAME: {get_param: CloudName}
902   nova_server_resource:
903     description: Heat resource handle for the Nova compute server
904     value:
905       {get_resource: Controller}
906   swift_device:
907     description: Swift device formatted for swift-ring-builder
908     value:
909       str_replace:
910         template: 'r1z1-IP:%PORT%/d1'
911         params:
912           IP: {get_attr: [Controller, networks, ctlplane, 0]}
913   swift_proxy_memcache:
914     description: Swift proxy-memcache value
915     value:
916       str_replace:
917         template: "IP:11211"
918         params:
919           IP: {get_attr: [Controller, networks, ctlplane, 0]}