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