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