Merge "puppet: tidy up the Nova glance API server config"
[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         keystone_identity_uri:
495           list_join:
496             - ''
497             - - 'http://'
498               - {get_param: VirtualIP}
499               - ':35357/'
500         keystone_auth_uri:
501           list_join:
502             - ''
503             - - 'http://'
504               - {get_param: VirtualIP}
505               - ':5000/v2.0/'
506         mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
507         mysql_root_password: {get_param: MysqlRootPassword}
508         mysql_cluster_name:
509           str_replace:
510             template: tripleo-CLUSTER
511             params:
512               CLUSTER: {get_param: MysqlClusterUniquePart}
513         neutron_flat_networks: {get_param: NeutronFlatNetworks}
514         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
515         neutron_agent_mode: {get_param: NeutronAgentMode}
516         neutron_router_distributed: {get_param: NeutronDVR}
517         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
518         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
519         neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
520         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
521         neutron_public_interface: {get_param: NeutronPublicInterface}
522         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
523         neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
524         neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
525         neutron_tenant_network_type: {get_param: NeutronNetworkType}
526         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
527         neutron_password: {get_param: NeutronPassword}
528         neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
529         neutron_dsn:
530           list_join:
531             - ''
532             - - 'mysql://neutron:unset@'
533               - {get_param: VirtualIP}
534               - '/ovs_neutron?charset=utf8'
535         neutron_url:
536           list_join:
537             - ''
538             - - 'http://'
539               - {get_param: VirtualIP}
540               - ':9696'
541         neutron_admin_auth_url:
542           list_join:
543             - ''
544             - - 'http://'
545               - {get_param: VirtualIP}
546               - ':35357/v2.0'
547         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
548         ceilometer_password: {get_param: CeilometerPassword}
549         ceilometer_dsn:
550           list_join:
551             - ''
552             - - 'mysql://ceilometer:unset@'
553               - {get_param: VirtualIP}
554               - '/ceilometer'
555         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
556         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
557         nova_password: {get_param: NovaPassword}
558         nova_dsn:
559           list_join:
560             - ''
561             - - 'mysql://nova:unset@'
562               - {get_param: VirtualIP}
563               - '/nova'
564         rabbit_username: {get_param: RabbitUserName}
565         rabbit_password: {get_param: RabbitPassword}
566         rabbit_cookie: {get_param: RabbitCookie}
567         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
568         rabbit_client_port: {get_param: RabbitClientPort}
569         ntp_servers:
570           str_replace:
571             template: '["server"]'
572             params:
573               server: {get_param: NtpServer}
574         control_virtual_interface: {get_param: ControlVirtualInterface}
575         public_virtual_interface: {get_param: PublicVirtualInterface}
576         public_virtual_ip: {get_param: PublicVirtualIP}
577         swift_hash_suffix: {get_param: SwiftHashSuffix}
578         swift_password: {get_param: SwiftPassword}
579         swift_part_power: {get_param: SwiftPartPower}
580         swift_replicas: {get_param: SwiftReplicas}
581         swift_min_part_hours: {get_param: SwiftMinPartHours}
582         swift_mount_check: {get_param: SwiftMountCheck}
583         enable_package_install: {get_param: EnablePackageInstall}
584
585   # Map heat metadata into hiera datafiles
586   ControllerConfig:
587     type: OS::Heat::StructuredConfig
588     properties:
589       group: os-apply-config
590       config:
591         hiera:
592           hierarchy:
593             - heat_config_%{::deploy_config_name}
594             - controller
595             - object
596             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
597             - rabbit # provided by allNodesConfig
598             - ceph_cluster # provided by CephClusterConfig
599             - ceph
600             - bootstrap_node # provided by BootstrapNodeConfig
601             - common
602           datafiles:
603             common:
604               raw_data: {get_file: hieradata/common.yaml}
605             ceph:
606               raw_data: {get_file: hieradata/ceph.yaml}
607             object:
608               raw_data: {get_file: hieradata/object.yaml}
609             controller:
610               raw_data: {get_file: hieradata/controller.yaml}
611               mapped_data: # data supplied directly to this deployment configuration, etc
612                 debug: {get_input: debug}
613                 bootstack_nodeid: {get_input: bootstack_nodeid}
614                 controller_host: {get_input: controller_host} #local-ipv4
615                 # Swift
616                 swift::proxy::proxy_local_net_ip: {get_input: controller_host}
617                 swift::proxy::authtoken::auth_uri: {get_input: keystone_auth_uri}
618                 swift::proxy::authtoken::identity_uri: {get_input: keystone_identity_uri}
619                 swift::storage::all::storage_local_net_ip: {get_input: controller_host}
620                 swift::swift_hash_suffix: {get_input: swift_hash_suffix}
621                 swift::proxy::authtoken::admin_password: {get_input: swift_password}
622                 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
623                 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
624                 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
625                 swift_mount_check: {get_input: swift_mount_check}
626
627                 # NOTE(dprince): build_ring support is currently not wired in.
628                 # See: https://review.openstack.org/#/c/109225/
629                 tripleo::ringbuilder::build_ring: True
630                 # Cinder
631                 cinder_enable_rbd_backend: {get_input: cinder_enable_rbd_backend}
632                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
633                 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
634                 cinder_iscsi_ip_address: {get_input: controller_host}
635                 cinder::database_connection: {get_input: cinder_dsn}
636                 cinder::api::keystone_password: {get_input: cinder_password}
637                 cinder::api::auth_uri: {get_input: keystone_auth_uri}
638                 cinder::api::identity_uri: {get_input: keystone_identity_uri}
639                 cinder::api::bind_host: {get_input: controller_host}
640                 cinder::rabbit_userid: {get_input: rabbit_username}
641                 cinder::rabbit_password: {get_input: rabbit_password}
642                 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
643                 #cinder::debug: {get_input: debug}
644                 # Glance
645                 glance::api::bind_port: {get_input: glance_port}
646                 glance::api::bind_host: {get_input: controller_host}
647                 glance::api::auth_uri: {get_input: keystone_auth_uri}
648                 glance::api::identity_uri: {get_input: keystone_identity_uri}
649                 glance::api::registry_host: {get_input: controller_host}
650                 glance::api::keystone_password: {get_input: glance_password}
651                 # used to construct glance_api_servers
652                 glance_port: {get_input: glance_port}
653                 glance_protocol: {get_input: glance_protocol}
654                 glance_notifier_strategy: {get_input: glance_notifier_strategy}
655                 glance_log_file: {get_input: glance_log_file}
656                 glance_log_file: {get_input: glance_log_file}
657                 glance::api::database_connection: {get_input: glance_dsn}
658                 glance::registry::keystone_password: {get_input: glance_password}
659                 glance::registry::database_connection: {get_input: glance_dsn}
660                 glance::registry::bind_host: {get_input: controller_host}
661                 glance::registry::auth_uri: {get_input: keystone_auth_uri}
662                 glance::registry::identity_uri: {get_input: keystone_identity_uri}
663                 glance::backend::swift::swift_store_auth_address: {get_input: glance_swift_store_auth_address}
664                 glance::backend::swift::swift_store_user: service:glance
665                 glance::backend::swift::swift_store_key: {get_input: glance_password}
666                 # Heat
667                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
668                 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
669                 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
670                 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
671                 heat::engine::auth_encryption_key: {get_input: heat_auth_encryption_key}
672                 heat::rabbit_userid: {get_input: rabbit_username}
673                 heat::rabbit_password: {get_input: rabbit_password}
674                 heat::rabbit_host: {get_input: controller_virtual_ip}
675                 heat::auth_uri: {get_input: keystone_auth_uri}
676                 heat::identity_uri: {get_input: keystone_identity_uri}
677                 heat::keystone_password: {get_input: heat_password}
678                 heat::api::bind_host: {get_input: controller_host}
679                 heat::api_cloudwatch::bind_host: {get_input: controller_host}
680                 heat::api_cfn::bind_host: {get_input: controller_host}
681                 heat::database_connection: {get_input: heat_dsn}
682                 heat::instance_user: heat-admin
683
684                 # Keystone
685                 keystone::admin_token: {get_input: admin_token}
686                 keystone_ca_certificate: {get_input: keystone_ca_certificate}
687                 keystone_signing_key: {get_input: keystone_signing_key}
688                 keystone_signing_certificate: {get_input: keystone_signing_certificate}
689                 keystone_ssl_certificate: {get_input: keystone_ssl_certificate}
690                 keystone_ssl_certificate_key: {get_input: keystone_ssl_certificate_key}
691                 keystone::database_connection: {get_input: keystone_dsn}
692                 keystone::public_bind_host: {get_input: controller_host}
693                 keystone::admin_bind_host: {get_input: controller_host}
694                 #keystone::debug: {get_input: debug}
695                 # MySQL
696                 admin_password: {get_input: admin_password}
697                 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
698                 mysql_root_password: {get_input: mysql_root_password}
699                 mysql_cluster_name: {get_input: mysql_cluster_name}
700                 # Neutron
701                 neutron::bind_host: {get_input: controller_host}
702                 neutron::rabbit_password: {get_input: rabbit_password}
703                 neutron::rabbit_user: {get_input: rabbit_user}
704                 #neutron::debug: {get_input: debug}
705                 neutron::server::auth_uri: {get_input: keystone_auth_uri}
706                 neutron::server::identity_uri: {get_input: keystone_identity_uri}
707                 neutron::server::database_connection: {get_input: neutron_dsn}
708                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
709                 neutron::agents::ml2::ovs::local_ip: {get_input: controller_host}
710                 neutron_flat_networks: {get_input: neutron_flat_networks}
711                 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
712                 neutron::agents::metadata::metadata_ip: {get_input: controller_virtual_ip}
713                 neutron_agent_mode: {get_input: neutron_agent_mode}
714                 neutron_router_distributed: {get_input: neutron_router_distributed}
715                 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
716                 neutron_allow_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
717                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
718                 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
719                 neutron_public_interface: {get_input: neutron_public_interface}
720                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
721                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
722                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
723                 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
724                 neutron_tunnel_types: {get_input: neutron_tunnel_types}
725                 neutron::server::auth_password: {get_input: neutron_password}
726                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
727                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
728                 neutron_dsn: {get_input: neutron_dsn}
729                 # Ceilometer
730                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
731                 ceilometer::rabbit_userid: {get_input: rabbit_username}
732                 ceilometer::rabbit_password: {get_input: rabbit_password}
733                 ceilometer::rabbit_host: {get_input: controller_virtual_ip}
734                 ceilometer::api::host: {get_input: controller_host}
735                 ceilometer::api::keystone_password: {get_input: ceilometer_password}
736                 ceilometer::api::keystone_auth_uri: {get_input: keystone_auth_uri}
737                 ceilometer::api::keystone_identity_uri: {get_input: keystone_identity_uri}
738                 ceilometer::db::database_connection: {get_input: ceilometer_dsn}
739                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
740                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
741                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
742                 # Nova
743                 nova::rabbit_userid: {get_input: rabbit_username}
744                 nova::rabbit_password: {get_input: rabbit_password}
745                 nova::api::auth_uri: {get_input: keystone_auth_uri}
746                 nova::api::identity_uri: {get_input: keystone_identity_uri}
747                 nova::api::api_bind_address: {get_input: controller_host}
748                 nova::api::metadata_listen: {get_input: controller_host}
749                 nova::api::admin_password: {get_input: nova_password}
750                 nova::database_connection: {get_input: nova_dsn}
751                 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
752                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
753                 nova::network::neutron::neutron_url: {get_input: neutron_url}
754                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
755
756                 # Rabbit
757                 rabbit_username: {get_input: rabbit_username}
758                 rabbit_password: {get_input: rabbit_password}
759                 rabbit_client_use_ssl: {get_input: rabbit_client_use_ssl}
760                 rabbit_client_port: {get_input: rabbit_client_port}
761                 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
762                 # Misc
763                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
764                 ntp::servers: {get_input: ntp_servers}
765                 control_virtual_interface: {get_input: control_virtual_interface}
766                 controller_virtual_ip: {get_input: controller_virtual_ip}
767                 public_virtual_interface: {get_input: public_virtual_interface}
768                 public_virtual_ip: {get_input: public_virtual_ip}
769                 tripleo::loadbalancer::controller_host: {get_input: controller_host}
770                 tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
771                 tripleo::loadbalancer::controller_virtual_ip: {get_input: controller_virtual_ip}
772                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
773                 tripleo::loadbalancer::public_virtual_ip: {get_input: public_virtual_ip}
774                 enable_package_install: {get_input: enable_package_install}
775
776 outputs:
777   ip_address:
778     description: IP address of the server in the ctlplane network
779     value: {get_attr: [Controller, networks, ctlplane, 0]}
780   hostname:
781     description: Hostname of the server
782     value: {get_attr: [Controller, name]}
783   corosync_node:
784     description: >
785       Node object in the format {ip: ..., name: ...} format that the corosync
786       element expects
787     value:
788       ip: {get_attr: [Controller, networks, ctlplane, 0]}
789       name: {get_attr: [Controller, name]}
790   hosts_entry:
791     description: >
792       Server's IP address and hostname in the /etc/hosts format
793     value:
794       str_replace:
795         template: IP HOST HOST.novalocal CLOUDNAME
796         params:
797           IP: {get_attr: [Controller, networks, ctlplane, 0]}
798           HOST: {get_attr: [Controller, name]}
799           CLOUDNAME: {get_param: CloudName}
800   nova_server_resource:
801     description: Heat resource handle for the Nova compute server
802     value:
803       {get_resource: Controller}
804   swift_device:
805     description: Swift device formatted for swift-ring-builder
806     value:
807       str_replace:
808         template: 'r1z1-IP:%PORT%/d1'
809         params:
810           IP: {get_attr: [Controller, networks, ctlplane, 0]}
811   swift_proxy_memcache:
812     description: Swift proxy-memcache value
813     value:
814       str_replace:
815         template: "IP:11211"
816         params:
817           IP: {get_attr: [Controller, networks, ctlplane, 0]}