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