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