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