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