3 # [database_connection]
4 # Url used to connect to database.
5 # (Optional) Defaults to
6 # 'sqlite:////var/lib/cinder/cinder.sqlite'
8 # [database_idle_timeout]
9 # Timeout when db connections should be reaped.
10 # (Optional) Defaults to 3600.
12 # [database_min_pool_size]
13 # Minimum number of SQL connections to keep open in a pool.
14 # (Optional) Defaults to 1.
16 # [database_max_pool_size]
17 # Maximum number of SQL connections to keep open in a pool.
18 # (Optional) Defaults to undef.
20 # [database_max_retries]
21 # Maximum db connection retries during startup.
22 # Setting -1 implies an infinite retry count.
23 # (Optional) Defaults to 10.
25 # [database_retry_interval]
26 # Interval between retries of opening a sql connection.
27 # (Optional) Defaults to 10.
29 # [database_max_overflow]
30 # If set, use this value for max_overflow with sqlalchemy.
31 # (Optional) Defaults to undef.
34 # (optional) Connect over SSL for RabbitMQ
37 # [*kombu_ssl_ca_certs*]
38 # (optional) SSL certification authority file (valid only if SSL enabled).
41 # [*kombu_ssl_certfile*]
42 # (optional) SSL cert file (valid only if SSL enabled).
45 # [*kombu_ssl_keyfile*]
46 # (optional) SSL key file (valid only if SSL enabled).
49 # [*kombu_ssl_version*]
50 # (optional) SSL version to use (valid only if SSL enabled).
51 # Valid values are TLSv1, SSLv23 and SSLv3. SSLv2 may be
52 # available on some distributions.
55 # [amqp_durable_queues]
56 # Use durable queues in amqp.
57 # (Optional) Defaults to false.
60 # Use syslog for logging.
61 # (Optional) Defaults to false.
64 # Syslog facility to receive log lines.
65 # (Optional) Defaults to LOG_USER.
68 # (optional) Directory where logs should be stored.
69 # If set to boolean false, it will not log to any directory.
70 # Defaults to '/var/log/cinder'
73 # (optional) Enable SSL on the API server
74 # Defaults to false, not set
77 # (optinal) Certificate file to use when starting API server securely
78 # Defaults to false, not set
81 # (optional) Private key file to use when starting API server securely
82 # Defaults to false, not set
85 # (optional) CA certificate file to use to verify connecting clients
86 # Defaults to false, not set_
89 # (optional) Deprecated. Does nothing.
91 # [*storage_availability_zone*]
92 # (optional) Availability zone of the node.
95 # [*default_availability_zone*]
96 # (optional) Default availability zone for new volumes.
97 # If not set, the storage_availability_zone option value is used as
98 # the default for new volumes.
107 $database_connection = 'sqlite:////var/lib/cinder/cinder.sqlite',
108 $database_idle_timeout = '3600',
109 $database_min_pool_size = '1',
110 $database_max_pool_size = undef,
111 $database_max_retries = '10',
112 $database_retry_interval = '10',
113 $database_max_overflow = undef,
114 $rpc_backend = 'cinder.openstack.common.rpc.impl_kombu',
115 $control_exchange = 'openstack',
116 $rabbit_host = '127.0.0.1',
118 $rabbit_hosts = false,
119 $rabbit_virtual_host = '/',
120 $rabbit_userid = 'guest',
121 $rabbit_password = false,
122 $rabbit_use_ssl = false,
123 $kombu_ssl_ca_certs = undef,
124 $kombu_ssl_certfile = undef,
125 $kombu_ssl_keyfile = undef,
126 $kombu_ssl_version = 'TLSv1',
127 $amqp_durable_queues = false,
128 $qpid_hostname = 'localhost',
130 $qpid_username = 'guest',
131 $qpid_password = false,
132 $qpid_sasl_mechanisms = false,
133 $qpid_reconnect = true,
134 $qpid_reconnect_timeout = 0,
135 $qpid_reconnect_limit = 0,
136 $qpid_reconnect_interval_min = 0,
137 $qpid_reconnect_interval_max = 0,
138 $qpid_reconnect_interval = 0,
139 $qpid_heartbeat = 60,
140 $qpid_protocol = 'tcp',
141 $qpid_tcp_nodelay = true,
142 $package_ensure = 'present',
147 $api_paste_config = '/etc/cinder/api-paste.ini',
149 $log_facility = 'LOG_USER',
150 $log_dir = '/var/log/cinder',
153 $storage_availability_zone = 'nova',
154 $default_availability_zone = false,
155 # DEPRECATED PARAMETERS
156 $mysql_module = undef,
157 $sql_connection = undef,
158 $sql_idle_timeout = undef,
161 include cinder::params
163 Package['cinder'] -> Cinder_config<||>
164 Package['cinder'] -> Cinder_api_paste_ini<||>
167 warning('The mysql_module parameter is deprecated. The latest 2.x mysql module will be used.')
171 warning('The sql_connection parameter is deprecated, use database_connection instead.')
172 $database_connection_real = $sql_connection
174 $database_connection_real = $database_connection
177 if $sql_idle_timeout {
178 warning('The sql_idle_timeout parameter is deprecated, use database_idle_timeout instead.')
179 $database_idle_timeout_real = $sql_idle_timeout
181 $database_idle_timeout_real = $database_idle_timeout
186 fail('The cert_file parameter is required when use_ssl is set to true')
189 fail('The key_file parameter is required when use_ssl is set to true')
193 # this anchor is used to simplify the graph between cinder components by
194 # allowing a resource to serve as a point where the configuration of cinder begins
195 anchor { 'cinder-start': }
198 ensure => $package_ensure,
199 name => $::cinder::params::package_name,
200 require => Anchor['cinder-start'],
203 file { $::cinder::params::cinder_conf:
208 require => Package['cinder'],
211 file { $::cinder::params::cinder_paste_api_ini:
216 require => Package['cinder'],
219 if $rpc_backend == 'cinder.openstack.common.rpc.impl_kombu' {
221 if ! $rabbit_password {
222 fail('Please specify a rabbit_password parameter.')
226 'DEFAULT/rabbit_password': value => $rabbit_password, secret => true;
227 'DEFAULT/rabbit_userid': value => $rabbit_userid;
228 'DEFAULT/rabbit_virtual_host': value => $rabbit_virtual_host;
229 'DEFAULT/rabbit_use_ssl': value => $rabbit_use_ssl;
230 'DEFAULT/control_exchange': value => $control_exchange;
231 'DEFAULT/amqp_durable_queues': value => $amqp_durable_queues;
235 cinder_config { 'DEFAULT/rabbit_hosts': value => join($rabbit_hosts, ',') }
236 cinder_config { 'DEFAULT/rabbit_ha_queues': value => true }
237 cinder_config { 'DEFAULT/rabbit_host': ensure => absent }
238 cinder_config { 'DEFAULT/rabbit_port': ensure => absent }
240 cinder_config { 'DEFAULT/rabbit_host': value => $rabbit_host }
241 cinder_config { 'DEFAULT/rabbit_port': value => $rabbit_port }
242 cinder_config { 'DEFAULT/rabbit_hosts': value => "${rabbit_host}:${rabbit_port}" }
243 cinder_config { 'DEFAULT/rabbit_ha_queues': value => false }
247 cinder_config { 'DEFAULT/kombu_ssl_version': value => $kombu_ssl_version }
249 if $kombu_ssl_ca_certs {
250 cinder_config { 'DEFAULT/kombu_ssl_ca_certs': value => $kombu_ssl_ca_certs }
252 cinder_config { 'DEFAULT/kombu_ssl_ca_certs': ensure => absent}
255 if $kombu_ssl_certfile {
256 cinder_config { 'DEFAULT/kombu_ssl_certfile': value => $kombu_ssl_certfile }
258 cinder_config { 'DEFAULT/kombu_ssl_certfile': ensure => absent}
261 if $kombu_ssl_keyfile {
262 cinder_config { 'DEFAULT/kombu_ssl_keyfile': value => $kombu_ssl_keyfile }
264 cinder_config { 'DEFAULT/kombu_ssl_keyfile': ensure => absent}
268 'DEFAULT/kombu_ssl_ca_certs': ensure => absent;
269 'DEFAULT/kombu_ssl_certfile': ensure => absent;
270 'DEFAULT/kombu_ssl_keyfile': ensure => absent;
271 'DEFAULT/kombu_ssl_version': ensure => absent;
277 if $rpc_backend == 'cinder.openstack.common.rpc.impl_qpid' {
279 if ! $qpid_password {
280 fail('Please specify a qpid_password parameter.')
284 'DEFAULT/qpid_hostname': value => $qpid_hostname;
285 'DEFAULT/qpid_port': value => $qpid_port;
286 'DEFAULT/qpid_username': value => $qpid_username;
287 'DEFAULT/qpid_password': value => $qpid_password, secret => true;
288 'DEFAULT/qpid_reconnect': value => $qpid_reconnect;
289 'DEFAULT/qpid_reconnect_timeout': value => $qpid_reconnect_timeout;
290 'DEFAULT/qpid_reconnect_limit': value => $qpid_reconnect_limit;
291 'DEFAULT/qpid_reconnect_interval_min': value => $qpid_reconnect_interval_min;
292 'DEFAULT/qpid_reconnect_interval_max': value => $qpid_reconnect_interval_max;
293 'DEFAULT/qpid_reconnect_interval': value => $qpid_reconnect_interval;
294 'DEFAULT/qpid_heartbeat': value => $qpid_heartbeat;
295 'DEFAULT/qpid_protocol': value => $qpid_protocol;
296 'DEFAULT/qpid_tcp_nodelay': value => $qpid_tcp_nodelay;
297 'DEFAULT/amqp_durable_queues': value => $amqp_durable_queues;
300 if is_array($qpid_sasl_mechanisms) {
302 'DEFAULT/qpid_sasl_mechanisms': value => join($qpid_sasl_mechanisms, ' ');
304 } elsif $qpid_sasl_mechanisms {
306 'DEFAULT/qpid_sasl_mechanisms': value => $qpid_sasl_mechanisms;
310 'DEFAULT/qpid_sasl_mechanisms': ensure => absent;
315 if ! $default_availability_zone {
316 $default_availability_zone_real = $storage_availability_zone
318 $default_availability_zone_real = $default_availability_zone
322 'database/connection': value => $database_connection_real, secret => true;
323 'database/idle_timeout': value => $database_idle_timeout_real;
324 'database/min_pool_size': value => $database_min_pool_size;
325 'database/max_retries': value => $database_max_retries;
326 'database/retry_interval': value => $database_retry_interval;
327 'DEFAULT/verbose': value => $verbose;
328 'DEFAULT/debug': value => $debug;
329 'DEFAULT/api_paste_config': value => $api_paste_config;
330 'DEFAULT/rpc_backend': value => $rpc_backend;
331 'DEFAULT/storage_availability_zone': value => $storage_availability_zone;
332 'DEFAULT/default_availability_zone': value => $default_availability_zone_real;
335 if $database_max_pool_size {
337 'database/max_pool_size': value => $database_max_pool_size;
341 'database/max_pool_size': ensure => absent;
345 if $database_max_overflow {
347 'database/max_overflow': value => $database_max_overflow;
351 'database/max_overflow': ensure => absent;
355 if($database_connection_real =~ /mysql:\/\/\S+:\S+@\S+\/\S+/) {
356 require 'mysql::bindings'
357 require 'mysql::bindings::python'
358 } elsif($database_connection_real =~ /postgresql:\/\/\S+:\S+@\S+\/\S+/) {
360 } elsif($database_connection_real =~ /sqlite:\/\//) {
363 fail("Invalid db connection ${database_connection_real}")
368 'DEFAULT/log_dir': value => $log_dir;
372 'DEFAULT/log_dir': ensure => absent;
379 'DEFAULT/ssl_cert_file' : value => $cert_file;
380 'DEFAULT/ssl_key_file' : value => $key_file;
383 cinder_config { 'DEFAULT/ssl_ca_file' :
387 cinder_config { 'DEFAULT/ssl_ca_file' :
393 'DEFAULT/ssl_cert_file' : ensure => absent;
394 'DEFAULT/ssl_key_file' : ensure => absent;
395 'DEFAULT/ssl_ca_file' : ensure => absent;
401 'DEFAULT/use_syslog': value => true;
402 'DEFAULT/syslog_log_facility': value => $log_facility;
406 'DEFAULT/use_syslog': value => false;