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