Merge "Add support for Ceph as a Cinder and Nova 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   NeutronNetworkType:
246     default: 'gre'
247     description: The tenant network type for Neutron, either gre or vxlan.
248     type: string
249   NeutronNetworkVLANRanges:
250     default: 'datacentre'
251     description: >
252       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
253       Neutron documentation for permitted values. Defaults to permitting any
254       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
255     type: string
256   NeutronPassword:
257     default: unset
258     description: The password for the neutron service account, used by neutron agents.
259     type: string
260     hidden: true
261   NeutronPublicInterface:
262     default: nic1
263     description: What interface to bridge onto br-ex for network nodes.
264     type: string
265   NeutronPublicInterfaceTag:
266     default: ''
267     description: >
268       VLAN tag for creating a public VLAN. The tag will be used to
269       create an access port on the exterior bridge for each control plane node,
270       and that port will be given the IP address returned by neutron from the
271       public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
272       overcloud.yaml to include the deployment of VLAN ports to the control
273       plane.
274     type: string
275   NeutronPublicInterfaceDefaultRoute:
276     default: ''
277     description: A custom default route for the NeutronPublicInterface.
278     type: string
279   NeutronPublicInterfaceIP:
280     default: ''
281     description: A custom IP address to put onto the NeutronPublicInterface.
282     type: string
283   NeutronPublicInterfaceRawDevice:
284     default: ''
285     description: If set, the public interface is a vlan with this device as the raw device.
286     type: string
287   NeutronTunnelTypes:
288     default: 'gre'
289     description: |
290         The tunnel types for the Neutron tenant network. To specify multiple
291         values, use a comma separated string, like so: 'gre,vxlan'
292     type: string
293   NovaPassword:
294     default: unset
295     description: The password for the nova service account, used by nova-api.
296     type: string
297     hidden: true
298   NtpServer:
299     type: string
300     default: ''
301   PublicVirtualInterface:
302     default: 'br-ex'
303     description: >
304         Specifies the interface where the public-facing virtual ip will be assigned.
305         This should be int_public when a VLAN is being used.
306     type: string
307   PublicVirtualIP:
308     type: string
309     default: ''  # Has to be here because of the ignored empty value bug
310   RabbitCookie:
311     type: string
312     default: ''  # Has to be here because of the ignored empty value bug
313     hidden: true
314   RabbitPassword:
315     default: guest
316     description: The password for RabbitMQ
317     type: string
318     hidden: true
319   RabbitUserName:
320     default: guest
321     description: The username for RabbitMQ
322     type: string
323   RabbitClientUseSSL:
324     default: false
325     description: >
326         Rabbit client subscriber parameter to specify
327         an SSL connection to the RabbitMQ host.
328     type: string
329   RabbitClientPort:
330     default: 5672
331     description: Set rabbit subscriber port, change this if using SSL
332     type: number
333   SnmpdReadonlyUserName:
334     default: ro_snmp_user
335     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
336     type: string
337   SnmpdReadonlyUserPassword:
338     default: unset
339     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
340     type: string
341     hidden: true
342   SSLCACertificate:
343     default: ''
344     description: If set, the contents of an SSL certificate authority file.
345     type: string
346   SSLCertificate:
347     default: ''
348     description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
349     type: string
350     hidden: true
351   SSLKey:
352     default: ''
353     description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
354     type: string
355     hidden: true
356   SwiftHashSuffix:
357     default: unset
358     description: A random string to be used as a salt when hashing to determine mappings
359       in the ring.
360     hidden: true
361     type: string
362   SwiftMountCheck:
363     default: 'false'
364     description: Value of mount_check in Swift account/container/object -server.conf
365     type: boolean
366   SwiftMinPartHours:
367     type: number
368     default: 1
369     description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
370   SwiftPartPower:
371     default: 10
372     description: Partition Power to use when building Swift rings
373     type: number
374   SwiftPassword:
375     default: unset
376     description: The password for the swift service account, used by the swift proxy
377       services.
378     hidden: true
379     type: string
380   SwiftReplicas:
381     type: number
382     default: 3
383     description: How many replicas to use in the swift rings.
384   VirtualIP:
385     type: string
386     default: ''  # Has to be here because of the ignored empty value bug
387   EnablePackageInstall:
388     default: 'false'
389     description: Set to true to enable package installation via Puppet
390     type: boolean
391
392 resources:
393
394   Controller:
395     type: OS::Nova::Server
396     properties:
397       image: {get_param: Image}
398       image_update_policy: {get_param: ImageUpdatePolicy}
399       flavor: {get_param: Flavor}
400       key_name: {get_param: KeyName}
401       networks:
402         - network: ctlplane
403       user_data_format: SOFTWARE_CONFIG
404
405   NetworkConfig:
406     type: OS::TripleO::Net::SoftwareConfig
407
408   NetworkDeployment:
409     type: OS::TripleO::SoftwareDeployment
410     properties:
411       signal_transport: NO_SIGNAL
412       config: {get_attr: [NetworkConfig, config_id]}
413       server: {get_resource: Controller}
414       input_values:
415         bridge_name: br-ex
416         interface_name: {get_param: NeutronPublicInterface}
417
418   ControllerDeployment:
419     type: OS::TripleO::SoftwareDeployment
420     properties:
421       signal_transport: NO_SIGNAL
422       config: {get_resource: ControllerConfig}
423       server: {get_resource: Controller}
424       input_values:
425         bootstack_nodeid: {get_attr: [Controller, name]}
426         controller_host: {get_attr: [Controller, networks, ctlplane, 0]}
427         controller_virtual_ip: {get_param: VirtualIP}
428         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
429         heat.watch_server_url:
430           list_join:
431             - ''
432             - - 'http://'
433               - {get_param: VirtualIP}
434               - ':8003'
435         heat.metadata_server_url:
436           list_join:
437             - ''
438             - - 'http://'
439               - {get_param: VirtualIP}
440               - ':8000'
441         heat.waitcondition_server_url:
442           list_join:
443             - ''
444             - - 'http://'
445               - {get_param: VirtualIP}
446               - ':8000/v1/waitcondition'
447         heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
448         admin_password: {get_param: AdminPassword}
449         admin_token: {get_param: AdminToken}
450         neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
451         debug: {get_param: Debug}
452         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
453         cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
454         cinder_password: {get_param: CinderPassword}
455         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
456         cinder_iscsi_helper: {get_param: CinderISCSIHelper}
457         cinder_dsn:
458           list_join:
459             - ''
460             - - 'mysql://cinder:unset@'
461               - {get_param: VirtualIP}
462               - '/cinder'
463         glance_port: {get_param: GlancePort}
464         glance_protocol: {get_param: GlanceProtocol}
465         glance_password: {get_param: GlancePassword}
466         glance_swift_store_auth_address: {list_join: ['', ['http://', {get_param: VirtualIP} , ':5000/v2.0']]}
467         glance_notifier_strategy: {get_param: GlanceNotifierStrategy}
468         glance_log_file: {get_param: GlanceLogFile}
469         glance_dsn:
470           list_join:
471             - ''
472             - - 'mysql://glance:unset@'
473               - {get_param: VirtualIP}
474               - '/glance'
475         heat_password: {get_param: HeatPassword}
476         heat_stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
477         heat_dsn:
478           list_join:
479             - ''
480             - - 'mysql://heat:unset@'
481               - {get_param: VirtualIP}
482               - '/heat'
483         keystone_ca_certificate: {get_param: KeystoneCACertificate}
484         keystone_signing_key: {get_param: KeystoneSigningKey}
485         keystone_signing_certificate: {get_param: KeystoneSigningCertificate}
486         keystone_ssl_certificate: {get_param: KeystoneSSLCertificate}
487         keystone_ssl_certificate_key: {get_param: KeystoneSSLCertificateKey}
488         keystone_dsn:
489           list_join:
490             - ''
491             - - 'mysql://keystone:unset@'
492               - {get_param: VirtualIP}
493               - '/keystone'
494         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
495         mysql_root_password: {get_param: MysqlRootPassword}
496         mysql_cluster_name:
497           str_replace:
498             template: tripleo-CLUSTER
499             params:
500               CLUSTER: {get_param: MysqlClusterUniquePart}
501         neutron_flat_networks: {get_param: NeutronFlatNetworks}
502         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
503         neutron_agent_mode: {get_param: NeutronAgentMode}
504         neutron_router_distributed: {get_param: NeutronDVR}
505         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
506         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
507         neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
508         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
509         neutron_public_interface: {get_param: NeutronPublicInterface}
510         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
511         neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
512         neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
513         neutron_tenant_network_type: {get_param: NeutronNetworkType}
514         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
515         neutron_password: {get_param: NeutronPassword}
516         neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
517         neutron_dsn:
518           list_join:
519             - ''
520             - - 'mysql://neutron:unset@'
521               - {get_param: VirtualIP}
522               - '/ovs_neutron?charset=utf8'
523         neutron_url:
524           list_join:
525             - ''
526             - - 'http://'
527               - {get_param: VirtualIP}
528               - ':9696'
529         neutron_admin_auth_url:
530           list_join:
531             - ''
532             - - 'http://'
533               - {get_param: VirtualIP}
534               - ':35357/v2.0'
535         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
536         ceilometer_password: {get_param: CeilometerPassword}
537         ceilometer_dsn:
538           list_join:
539             - ''
540             - - 'mysql://ceilometer:unset@'
541               - {get_param: VirtualIP}
542               - '/ceilometer'
543         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
544         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
545         nova_password: {get_param: NovaPassword}
546         nova_dsn:
547           list_join:
548             - ''
549             - - 'mysql://nova:unset@'
550               - {get_param: VirtualIP}
551               - '/nova'
552         rabbit_username: {get_param: RabbitUserName}
553         rabbit_password: {get_param: RabbitPassword}
554         rabbit_cookie: {get_param: RabbitCookie}
555         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
556         rabbit_client_port: {get_param: RabbitClientPort}
557         ntp_servers:
558           str_replace:
559             template: '["server"]'
560             params:
561               server: {get_param: NtpServer}
562         control_virtual_interface: {get_param: ControlVirtualInterface}
563         public_virtual_interface: {get_param: PublicVirtualInterface}
564         public_virtual_ip: {get_param: PublicVirtualIP}
565         swift_hash_suffix: {get_param: SwiftHashSuffix}
566         swift_password: {get_param: SwiftPassword}
567         swift_part_power: {get_param: SwiftPartPower}
568         swift_replicas: {get_param: SwiftReplicas}
569         swift_min_part_hours: {get_param: SwiftMinPartHours}
570         swift_mount_check: {get_param: SwiftMountCheck}
571         enable_package_install: {get_param: EnablePackageInstall}
572
573   # Map heat metadata into hiera datafiles
574   ControllerConfig:
575     type: OS::Heat::StructuredConfig
576     properties:
577       group: os-apply-config
578       config:
579         hiera:
580           hierarchy:
581             - heat_config_%{::deploy_config_name}
582             - controller
583             - object
584             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
585             - rabbit # provided by allNodesConfig
586             - ceph_cluster # provided by CephClusterConfig
587             - ceph
588             - bootstrap_node # provided by BootstrapNodeConfig
589             - common
590           datafiles:
591             common:
592               raw_data: {get_file: hieradata/common.yaml}
593             ceph:
594               raw_data: {get_file: hieradata/ceph.yaml}
595             object:
596               raw_data: {get_file: hieradata/object.yaml}
597             controller:
598               raw_data: {get_file: hieradata/controller.yaml}
599               mapped_data: # data supplied directly to this deployment configuration, etc
600                 debug: {get_input: debug}
601                 bootstack_nodeid: {get_input: bootstack_nodeid}
602                 controller_host: {get_input: controller_host} #local-ipv4
603                 # Swift
604                 swift::proxy::proxy_local_net_ip: {get_input: controller_host}
605                 swift::proxy::authtoken::auth_host: {get_input: controller_virtual_ip}
606                 swift::storage::all::storage_local_net_ip: {get_input: controller_host}
607                 swift::swift_hash_suffix: {get_input: swift_hash_suffix}
608                 swift::proxy::authtoken::admin_password: {get_input: swift_password}
609                 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
610                 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
611                 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
612                 swift_mount_check: {get_input: swift_mount_check}
613
614                 # NOTE(dprince): build_ring support is currently not wired in.
615                 # See: https://review.openstack.org/#/c/109225/
616                 tripleo::ringbuilder::build_ring: True
617                 # Cinder
618                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
619                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
620                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
621                 cinder_iscsi_ip_address: {get_input: controller_host}
622                 cinder::database_connection: {get_input: cinder_dsn}
623                 cinder::api::keystone_password: {get_input: cinder_password}
624                 cinder::api::keystone_auth_host: {get_input: controller_virtual_ip}
625                 cinder::api::bind_host: {get_input: controller_host}
626                 cinder::rabbit_userid: {get_input: rabbit_username}
627                 cinder::rabbit_password: {get_input: rabbit_password}
628                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
629                 #cinder::debug: {get_input: debug}
630                 # Glance
631                 glance::api::bind_port: {get_input: glance_port}
632                 glance::api::bind_host: {get_input: controller_host}
633                 glance::api::auth_host: {get_input: controller_virtual_ip}
634                 glance::api::registry_host: {get_input: controller_host}
635                 glance::api::keystone_password: {get_input: glance_password}
636                 # used to construct glance_api_servers
637                 glance_port: {get_input: glance_port}
638                 glance_protocol: {get_input: glance_protocol}
639                 glance_notifier_strategy: {get_input: glance_notifier_strategy}
640                 glance_log_file: {get_input: glance_log_file}
641                 glance_log_file: {get_input: glance_log_file}
642                 glance::api::database_connection: {get_input: glance_dsn}
643                 glance::registry::keystone_password: {get_input: glance_password}
644                 glance::registry::database_connection: {get_input: glance_dsn}
645                 glance::registry::bind_host: {get_input: controller_host}
646                 glance::registry::auth_host: {get_input: controller_virtual_ip}
647                 glance::backend::swift::swift_store_auth_address: {get_input: glance_swift_store_auth_address}
648                 glance::backend::swift::swift_store_user: service:glance
649                 glance::backend::swift::swift_store_key: {get_input: glance_password}
650                 # Heat
651                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
652                 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
653                 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
654                 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
655                 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
656                 heat::rabbit_userid: {get_input: rabbit_username}
657                 heat::rabbit_password: {get_input: rabbit_password}
658                 heat::rabbit_host: {get_input: controller_virtual_ip}
659                 heat::keystone_host: {get_input: controller_virtual_ip}
660                 heat::keystone_password: {get_input: heat_password}
661                 heat::api::bind_host: {get_input: controller_host}
662                 heat::api_cloudwatch::bind_host: {get_input: controller_host}
663                 heat::api_cfn::bind_host: {get_input: controller_host}
664                 heat::database_connection: {get_input: heat_dsn}
665                 heat::instance_user: heat-admin
666
667                 # Keystone
668                 keystone::admin_token: {get_input: admin_token}
669                 keystone_ca_certificate: {get_input: keystone_ca_certificate}
670                 keystone_signing_key: {get_input: keystone_signing_key}
671                 keystone_signing_certificate: {get_input: keystone_signing_certificate}
672                 keystone_ssl_certificate: {get_input: keystone_ssl_certificate}
673                 keystone_ssl_certificate_key: {get_input: keystone_ssl_certificate_key}
674                 keystone::database_connection: {get_input: keystone_dsn}
675                 keystone::public_bind_host: {get_input: controller_host}
676                 keystone::admin_bind_host: {get_input: controller_host}
677                 #keystone::debug: {get_input: debug}
678                 # MySQL
679                 admin_password: {get_input: admin_password}
680                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
681                 mysql_root_password: {get_input: mysql_root_password}
682                 mysql_cluster_name: {get_input: mysql_cluster_name}
683                 # Neutron
684                 neutron::bind_host: {get_input: controller_host}
685                 neutron::rabbit_password: {get_input: rabbit_password}
686                 neutron::rabbit_user: {get_input: rabbit_user}
687                 #neutron::debug: {get_input: debug}
688                 neutron::server::auth_host: {get_input: controller_virtual_ip}
689                 neutron::server::database_connection: {get_input: neutron_dsn}
690                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
691                 neutron::agents::ml2::ovs::local_ip: {get_input: controller_host}
692                 neutron_flat_networks: {get_input: neutron_flat_networks}
693                 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
694                 neutron::agents::metadata::metadata_ip: {get_input: controller_virtual_ip}
695                 neutron_agent_mode: {get_input: neutron_agent_mode}
696                 neutron_router_distributed: {get_input: neutron_router_distributed}
697                 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
698                 neutron_allow_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
699                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
700                 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
701                 neutron_public_interface: {get_input: neutron_public_interface}
702                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
703                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
704                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
705                 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
706                 neutron_tunnel_types: {get_input: neutron_tunnel_types}
707                 neutron::server::auth_password: {get_input: neutron_password}
708                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
709                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
710                 neutron_dsn: {get_input: neutron_dsn}
711                 # Ceilometer
712                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
713                 ceilometer::rabbit_userid: {get_input: rabbit_username}
714                 ceilometer::rabbit_password: {get_input: rabbit_password}
715                 ceilometer::rabbit_host: {get_input: controller_virtual_ip}
716                 ceilometer::api::host: {get_input: controller_host}
717                 ceilometer::api::keystone_password: {get_input: ceilometer_password}
718                 ceilometer::api::keystone_host: {get_input: controller_virtual_ip}
719                 ceilometer::db::database_connection: {get_input: ceilometer_dsn}
720                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
721                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
722                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
723                 # Nova
724                 nova::rabbit_userid: {get_input: rabbit_username}
725                 nova::rabbit_password: {get_input: rabbit_password}
726                 nova::api::auth_host: {get_input: controller_virtual_ip}
727                 nova::api::api_bind_address: {get_input: controller_host}
728                 nova::api::metadata_listen: {get_input: controller_host}
729                 nova::api::admin_password: {get_input: nova_password}
730                 nova::database_connection: {get_input: nova_dsn}
731                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
732                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
733                 nova::network::neutron::neutron_url: {get_input: neutron_url}
734                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
735
736                 # Rabbit
737                 rabbit_username: {get_input: rabbit_username}
738                 rabbit_password: {get_input: rabbit_password}
739                 rabbit_client_use_ssl: {get_input: rabbit_client_use_ssl}
740                 rabbit_client_port: {get_input: rabbit_client_port}
741                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
742                 # Misc
743                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
744                 ntp::servers: {get_input: ntp_servers}
745                 control_virtual_interface: {get_input: control_virtual_interface}
746                 controller_virtual_ip: {get_input: controller_virtual_ip}
747                 public_virtual_interface: {get_input: public_virtual_interface}
748                 public_virtual_ip: {get_input: public_virtual_ip}
749                 tripleo::loadbalancer::controller_host: {get_input: controller_host}
750                 tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
751                 tripleo::loadbalancer::controller_virtual_ip: {get_input: controller_virtual_ip}
752                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
753                 tripleo::loadbalancer::public_virtual_ip: {get_input: public_virtual_ip}
754                 enable_package_install: {get_input: enable_package_install}
755
756 outputs:
757   ip_address:
758     description: IP address of the server in the ctlplane network
759     value: {get_attr: [Controller, networks, ctlplane, 0]}
760   hostname:
761     description: Hostname of the server
762     value: {get_attr: [Controller, name]}
763   corosync_node:
764     description: >
765       Node object in the format {ip: ..., name: ...} format that the corosync
766       element expects
767     value:
768       ip: {get_attr: [Controller, networks, ctlplane, 0]}
769       name: {get_attr: [Controller, name]}
770   hosts_entry:
771     description: >
772       Server's IP address and hostname in the /etc/hosts format
773     value:
774       str_replace:
775         template: IP HOST HOST.novalocal CLOUDNAME
776         params:
777           IP: {get_attr: [Controller, networks, ctlplane, 0]}
778           HOST: {get_attr: [Controller, name]}
779           CLOUDNAME: {get_param: CloudName}
780   nova_server_resource:
781     description: Heat resource handle for the Nova compute server
782     value:
783       {get_resource: Controller}
784   swift_device:
785     description: Swift device formatted for swift-ring-builder
786     value:
787       str_replace:
788         template: 'r1z1-IP:%PORT%/d1'
789         params:
790           IP: {get_attr: [Controller, networks, ctlplane, 0]}
791   swift_proxy_memcache:
792     description: Swift proxy-memcache value
793     value:
794       str_replace:
795         template: "IP:11211"
796         params:
797           IP: {get_attr: [Controller, networks, ctlplane, 0]}