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