
Add data base configs: min_pool_size, max_pool_size, max_retries, retry_interval, max_overflow Use the same default values as cinder project Change-Id: Icfc545e41049ee6b3d05fb6770a12d5d2b683f93
408 lines
13 KiB
Puppet
408 lines
13 KiB
Puppet
#
|
|
# == Parameters
|
|
# [database_connection]
|
|
# Url used to connect to database.
|
|
# (Optional) Defaults to
|
|
# 'sqlite:////var/lib/cinder/cinder.sqlite'
|
|
#
|
|
# [database_idle_timeout]
|
|
# Timeout when db connections should be reaped.
|
|
# (Optional) Defaults to 3600.
|
|
#
|
|
# [database_min_pool_size]
|
|
# Minimum number of SQL connections to keep open in a pool.
|
|
# (Optional) Defaults to 1.
|
|
#
|
|
# [database_max_pool_size]
|
|
# Maximum number of SQL connections to keep open in a pool.
|
|
# (Optional) Defaults to undef.
|
|
#
|
|
# [database_max_retries]
|
|
# Maximum db connection retries during startup.
|
|
# Setting -1 implies an infinite retry count.
|
|
# (Optional) Defaults to 10.
|
|
#
|
|
# [database_retry_interval]
|
|
# Interval between retries of opening a sql connection.
|
|
# (Optional) Defaults to 10.
|
|
#
|
|
# [database_max_overflow]
|
|
# If set, use this value for max_overflow with sqlalchemy.
|
|
# (Optional) Defaults to undef.
|
|
#
|
|
# [*rabbit_use_ssl*]
|
|
# (optional) Connect over SSL for RabbitMQ
|
|
# Defaults to false
|
|
#
|
|
# [*kombu_ssl_ca_certs*]
|
|
# (optional) SSL certification authority file (valid only if SSL enabled).
|
|
# Defaults to undef
|
|
#
|
|
# [*kombu_ssl_certfile*]
|
|
# (optional) SSL cert file (valid only if SSL enabled).
|
|
# Defaults to undef
|
|
#
|
|
# [*kombu_ssl_keyfile*]
|
|
# (optional) SSL key file (valid only if SSL enabled).
|
|
# Defaults to undef
|
|
#
|
|
# [*kombu_ssl_version*]
|
|
# (optional) SSL version to use (valid only if SSL enabled).
|
|
# Valid values are TLSv1, SSLv23 and SSLv3. SSLv2 may be
|
|
# available on some distributions.
|
|
# Defaults to 'SSLv3'
|
|
#
|
|
# [amqp_durable_queues]
|
|
# Use durable queues in amqp.
|
|
# (Optional) Defaults to false.
|
|
#
|
|
# [use_syslog]
|
|
# Use syslog for logging.
|
|
# (Optional) Defaults to false.
|
|
#
|
|
# [log_facility]
|
|
# Syslog facility to receive log lines.
|
|
# (Optional) Defaults to LOG_USER.
|
|
#
|
|
# [*log_dir*]
|
|
# (optional) Directory where logs should be stored.
|
|
# If set to boolean false, it will not log to any directory.
|
|
# Defaults to '/var/log/cinder'
|
|
#
|
|
# [*use_ssl*]
|
|
# (optional) Enable SSL on the API server
|
|
# Defaults to false, not set
|
|
#
|
|
# [*cert_file*]
|
|
# (optinal) Certificate file to use when starting API server securely
|
|
# Defaults to false, not set
|
|
#
|
|
# [*key_file*]
|
|
# (optional) Private key file to use when starting API server securely
|
|
# Defaults to false, not set
|
|
#
|
|
# [*ca_file*]
|
|
# (optional) CA certificate file to use to verify connecting clients
|
|
# Defaults to false, not set_
|
|
#
|
|
# [*mysql_module*]
|
|
# (optional) Deprecated. Does nothing.
|
|
#
|
|
# [*storage_availability_zone*]
|
|
# (optional) Availability zone of the node.
|
|
# Defaults to 'nova'
|
|
#
|
|
# [*default_availability_zone*]
|
|
# (optional) Default availability zone for new volumes.
|
|
# If not set, the storage_availability_zone option value is used as
|
|
# the default for new volumes.
|
|
# Defaults to false
|
|
#
|
|
# [sql_connection]
|
|
# DEPRECATED
|
|
# [sql_idle_timeout]
|
|
# DEPRECATED
|
|
#
|
|
class cinder (
|
|
$database_connection = 'sqlite:////var/lib/cinder/cinder.sqlite',
|
|
$database_idle_timeout = '3600',
|
|
$database_min_pool_size = '1',
|
|
$database_max_pool_size = undef,
|
|
$database_max_retries = '10',
|
|
$database_retry_interval = '10',
|
|
$database_max_overflow = undef,
|
|
$rpc_backend = 'cinder.openstack.common.rpc.impl_kombu',
|
|
$control_exchange = 'openstack',
|
|
$rabbit_host = '127.0.0.1',
|
|
$rabbit_port = 5672,
|
|
$rabbit_hosts = false,
|
|
$rabbit_virtual_host = '/',
|
|
$rabbit_userid = 'guest',
|
|
$rabbit_password = false,
|
|
$rabbit_use_ssl = false,
|
|
$kombu_ssl_ca_certs = undef,
|
|
$kombu_ssl_certfile = undef,
|
|
$kombu_ssl_keyfile = undef,
|
|
$kombu_ssl_version = 'SSLv3',
|
|
$amqp_durable_queues = false,
|
|
$qpid_hostname = 'localhost',
|
|
$qpid_port = '5672',
|
|
$qpid_username = 'guest',
|
|
$qpid_password = false,
|
|
$qpid_sasl_mechanisms = false,
|
|
$qpid_reconnect = true,
|
|
$qpid_reconnect_timeout = 0,
|
|
$qpid_reconnect_limit = 0,
|
|
$qpid_reconnect_interval_min = 0,
|
|
$qpid_reconnect_interval_max = 0,
|
|
$qpid_reconnect_interval = 0,
|
|
$qpid_heartbeat = 60,
|
|
$qpid_protocol = 'tcp',
|
|
$qpid_tcp_nodelay = true,
|
|
$package_ensure = 'present',
|
|
$use_ssl = false,
|
|
$ca_file = false,
|
|
$cert_file = false,
|
|
$key_file = false,
|
|
$api_paste_config = '/etc/cinder/api-paste.ini',
|
|
$use_syslog = false,
|
|
$log_facility = 'LOG_USER',
|
|
$log_dir = '/var/log/cinder',
|
|
$verbose = false,
|
|
$debug = false,
|
|
$storage_availability_zone = 'nova',
|
|
$default_availability_zone = false,
|
|
# DEPRECATED PARAMETERS
|
|
$mysql_module = undef,
|
|
$sql_connection = undef,
|
|
$sql_idle_timeout = undef,
|
|
) {
|
|
|
|
include cinder::params
|
|
|
|
Package['cinder'] -> Cinder_config<||>
|
|
Package['cinder'] -> Cinder_api_paste_ini<||>
|
|
|
|
if $mysql_module {
|
|
warning('The mysql_module parameter is deprecated. The latest 2.x mysql module will be used.')
|
|
}
|
|
|
|
if $sql_connection {
|
|
warning('The sql_connection parameter is deprecated, use database_connection instead.')
|
|
$database_connection_real = $sql_connection
|
|
} else {
|
|
$database_connection_real = $database_connection
|
|
}
|
|
|
|
if $sql_idle_timeout {
|
|
warning('The sql_idle_timeout parameter is deprecated, use database_idle_timeout instead.')
|
|
$database_idle_timeout_real = $sql_idle_timeout
|
|
} else {
|
|
$database_idle_timeout_real = $database_idle_timeout
|
|
}
|
|
|
|
if $use_ssl {
|
|
if !$cert_file {
|
|
fail('The cert_file parameter is required when use_ssl is set to true')
|
|
}
|
|
if !$key_file {
|
|
fail('The key_file parameter is required when use_ssl is set to true')
|
|
}
|
|
}
|
|
|
|
if $rabbit_use_ssl {
|
|
if !$kombu_ssl_ca_certs {
|
|
fail('The kombu_ssl_ca_certs parameter is required when rabbit_use_ssl is set to true')
|
|
}
|
|
if !$kombu_ssl_certfile {
|
|
fail('The kombu_ssl_certfile parameter is required when rabbit_use_ssl is set to true')
|
|
}
|
|
if !$kombu_ssl_keyfile {
|
|
fail('The kombu_ssl_keyfile parameter is required when rabbit_use_ssl is set to true')
|
|
}
|
|
}
|
|
|
|
# this anchor is used to simplify the graph between cinder components by
|
|
# allowing a resource to serve as a point where the configuration of cinder begins
|
|
anchor { 'cinder-start': }
|
|
|
|
package { 'cinder':
|
|
ensure => $package_ensure,
|
|
name => $::cinder::params::package_name,
|
|
require => Anchor['cinder-start'],
|
|
}
|
|
|
|
file { $::cinder::params::cinder_conf:
|
|
ensure => present,
|
|
owner => 'cinder',
|
|
group => 'cinder',
|
|
mode => '0600',
|
|
require => Package['cinder'],
|
|
}
|
|
|
|
file { $::cinder::params::cinder_paste_api_ini:
|
|
ensure => present,
|
|
owner => 'cinder',
|
|
group => 'cinder',
|
|
mode => '0600',
|
|
require => Package['cinder'],
|
|
}
|
|
|
|
if $rpc_backend == 'cinder.openstack.common.rpc.impl_kombu' {
|
|
|
|
if ! $rabbit_password {
|
|
fail('Please specify a rabbit_password parameter.')
|
|
}
|
|
|
|
cinder_config {
|
|
'DEFAULT/rabbit_password': value => $rabbit_password, secret => true;
|
|
'DEFAULT/rabbit_userid': value => $rabbit_userid;
|
|
'DEFAULT/rabbit_virtual_host': value => $rabbit_virtual_host;
|
|
'DEFAULT/rabbit_use_ssl': value => $rabbit_use_ssl;
|
|
'DEFAULT/control_exchange': value => $control_exchange;
|
|
'DEFAULT/amqp_durable_queues': value => $amqp_durable_queues;
|
|
}
|
|
|
|
if $rabbit_hosts {
|
|
cinder_config { 'DEFAULT/rabbit_hosts': value => join($rabbit_hosts, ',') }
|
|
cinder_config { 'DEFAULT/rabbit_ha_queues': value => true }
|
|
} else {
|
|
cinder_config { 'DEFAULT/rabbit_host': value => $rabbit_host }
|
|
cinder_config { 'DEFAULT/rabbit_port': value => $rabbit_port }
|
|
cinder_config { 'DEFAULT/rabbit_hosts': value => "${rabbit_host}:${rabbit_port}" }
|
|
cinder_config { 'DEFAULT/rabbit_ha_queues': value => false }
|
|
}
|
|
|
|
if $rabbit_use_ssl {
|
|
cinder_config {
|
|
'DEFAULT/kombu_ssl_ca_certs': value => $kombu_ssl_ca_certs;
|
|
'DEFAULT/kombu_ssl_certfile': value => $kombu_ssl_certfile;
|
|
'DEFAULT/kombu_ssl_keyfile': value => $kombu_ssl_keyfile;
|
|
'DEFAULT/kombu_ssl_version': value => $kombu_ssl_version;
|
|
}
|
|
} else {
|
|
cinder_config {
|
|
'DEFAULT/kombu_ssl_ca_certs': ensure => absent;
|
|
'DEFAULT/kombu_ssl_certfile': ensure => absent;
|
|
'DEFAULT/kombu_ssl_keyfile': ensure => absent;
|
|
'DEFAULT/kombu_ssl_version': ensure => absent;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
if $rpc_backend == 'cinder.openstack.common.rpc.impl_qpid' {
|
|
|
|
if ! $qpid_password {
|
|
fail('Please specify a qpid_password parameter.')
|
|
}
|
|
|
|
cinder_config {
|
|
'DEFAULT/qpid_hostname': value => $qpid_hostname;
|
|
'DEFAULT/qpid_port': value => $qpid_port;
|
|
'DEFAULT/qpid_username': value => $qpid_username;
|
|
'DEFAULT/qpid_password': value => $qpid_password, secret => true;
|
|
'DEFAULT/qpid_reconnect': value => $qpid_reconnect;
|
|
'DEFAULT/qpid_reconnect_timeout': value => $qpid_reconnect_timeout;
|
|
'DEFAULT/qpid_reconnect_limit': value => $qpid_reconnect_limit;
|
|
'DEFAULT/qpid_reconnect_interval_min': value => $qpid_reconnect_interval_min;
|
|
'DEFAULT/qpid_reconnect_interval_max': value => $qpid_reconnect_interval_max;
|
|
'DEFAULT/qpid_reconnect_interval': value => $qpid_reconnect_interval;
|
|
'DEFAULT/qpid_heartbeat': value => $qpid_heartbeat;
|
|
'DEFAULT/qpid_protocol': value => $qpid_protocol;
|
|
'DEFAULT/qpid_tcp_nodelay': value => $qpid_tcp_nodelay;
|
|
'DEFAULT/amqp_durable_queues': value => $amqp_durable_queues;
|
|
}
|
|
|
|
if is_array($qpid_sasl_mechanisms) {
|
|
cinder_config {
|
|
'DEFAULT/qpid_sasl_mechanisms': value => join($qpid_sasl_mechanisms, ' ');
|
|
}
|
|
} elsif $qpid_sasl_mechanisms {
|
|
cinder_config {
|
|
'DEFAULT/qpid_sasl_mechanisms': value => $qpid_sasl_mechanisms;
|
|
}
|
|
} else {
|
|
cinder_config {
|
|
'DEFAULT/qpid_sasl_mechanisms': ensure => absent;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ! $default_availability_zone {
|
|
$default_availability_zone_real = $storage_availability_zone
|
|
} else {
|
|
$default_availability_zone_real = $default_availability_zone
|
|
}
|
|
|
|
cinder_config {
|
|
'database/connection': value => $database_connection_real, secret => true;
|
|
'database/idle_timeout': value => $database_idle_timeout_real;
|
|
'database/min_pool_size': value => $database_min_pool_size;
|
|
'database/max_retries': value => $database_max_retries;
|
|
'database/retry_interval': value => $database_retry_interval;
|
|
'DEFAULT/verbose': value => $verbose;
|
|
'DEFAULT/debug': value => $debug;
|
|
'DEFAULT/api_paste_config': value => $api_paste_config;
|
|
'DEFAULT/rpc_backend': value => $rpc_backend;
|
|
'DEFAULT/storage_availability_zone': value => $storage_availability_zone;
|
|
'DEFAULT/default_availability_zone': value => $default_availability_zone_real;
|
|
}
|
|
|
|
if $database_max_pool_size {
|
|
cinder_config {
|
|
'database/max_pool_size': value => $database_max_pool_size;
|
|
}
|
|
} else {
|
|
cinder_config {
|
|
'database/max_pool_size': ensure => absent;
|
|
}
|
|
}
|
|
|
|
if $database_max_overflow {
|
|
cinder_config {
|
|
'database/max_overflow': value => $database_max_overflow;
|
|
}
|
|
} else {
|
|
cinder_config {
|
|
'database/max_overflow': ensure => absent;
|
|
}
|
|
}
|
|
|
|
if($database_connection_real =~ /mysql:\/\/\S+:\S+@\S+\/\S+/) {
|
|
require 'mysql::bindings'
|
|
require 'mysql::bindings::python'
|
|
} elsif($database_connection_real =~ /postgresql:\/\/\S+:\S+@\S+\/\S+/) {
|
|
|
|
} elsif($database_connection_real =~ /sqlite:\/\//) {
|
|
|
|
} else {
|
|
fail("Invalid db connection ${database_connection_real}")
|
|
}
|
|
|
|
if $log_dir {
|
|
cinder_config {
|
|
'DEFAULT/log_dir': value => $log_dir;
|
|
}
|
|
} else {
|
|
cinder_config {
|
|
'DEFAULT/log_dir': ensure => absent;
|
|
}
|
|
}
|
|
|
|
# SSL Options
|
|
if $use_ssl {
|
|
cinder_config {
|
|
'DEFAULT/ssl_cert_file' : value => $cert_file;
|
|
'DEFAULT/ssl_key_file' : value => $key_file;
|
|
}
|
|
if $ca_file {
|
|
cinder_config { 'DEFAULT/ssl_ca_file' :
|
|
value => $ca_file,
|
|
}
|
|
} else {
|
|
cinder_config { 'DEFAULT/ssl_ca_file' :
|
|
ensure => absent,
|
|
}
|
|
}
|
|
} else {
|
|
cinder_config {
|
|
'DEFAULT/ssl_cert_file' : ensure => absent;
|
|
'DEFAULT/ssl_key_file' : ensure => absent;
|
|
'DEFAULT/ssl_ca_file' : ensure => absent;
|
|
}
|
|
}
|
|
|
|
if $use_syslog {
|
|
cinder_config {
|
|
'DEFAULT/use_syslog': value => true;
|
|
'DEFAULT/syslog_log_facility': value => $log_facility;
|
|
}
|
|
} else {
|
|
cinder_config {
|
|
'DEFAULT/use_syslog': value => false;
|
|
}
|
|
}
|
|
|
|
}
|