module-puppetlabs-mysql/manifests/params.pp
2016-07-01 14:45:35 +01:00

439 lines
17 KiB
Puppet

# Private class: See README.md.
class mysql::params {
$manage_config_file = true
$purge_conf_dir = false
$restart = false
$root_password = 'UNSET'
$install_secret_file = '/.mysql_secret'
$server_package_ensure = 'present'
$server_package_manage = true
$server_service_manage = true
$server_service_enabled = true
$client_package_ensure = 'present'
$client_package_manage = true
$create_root_user = true
$create_root_my_cnf = true
# mysql::bindings
$bindings_enable = false
$java_package_ensure = 'present'
$java_package_provider = undef
$perl_package_ensure = 'present'
$perl_package_provider = undef
$php_package_ensure = 'present'
$php_package_provider = undef
$python_package_ensure = 'present'
$python_package_provider = undef
$ruby_package_ensure = 'present'
$ruby_package_provider = undef
$client_dev_package_ensure = 'present'
$client_dev_package_provider = undef
$daemon_dev_package_ensure = 'present'
$daemon_dev_package_provider = undef
$xtrabackup_package_name = 'percona-xtrabackup'
case $::osfamily {
'RedHat': {
case $::operatingsystem {
'Fedora': {
if versioncmp($::operatingsystemrelease, '19') >= 0 or $::operatingsystemrelease == 'Rawhide' {
$provider = 'mariadb'
} else {
$provider = 'mysql'
}
}
/^(RedHat|CentOS|Scientific|OracleLinux)$/: {
if versioncmp($::operatingsystemmajrelease, '7') >= 0 {
$provider = 'mariadb'
} else {
$provider = 'mysql'
}
}
default: {
$provider = 'mysql'
}
}
if $provider == 'mariadb' {
$client_package_name = 'mariadb'
$server_package_name = 'mariadb-server'
$server_service_name = 'mariadb'
$log_error = '/var/log/mariadb/mariadb.log'
$config_file = '/etc/my.cnf.d/server.cnf'
# mariadb package by default has !includedir set in my.cnf to /etc/my.cnf.d
$includedir = undef
$pidfile = '/var/run/mariadb/mariadb.pid'
$daemon_dev_package_name = 'mariadb-devel'
} else {
$client_package_name = 'mysql'
$server_package_name = 'mysql-server'
$server_service_name = 'mysqld'
$log_error = '/var/log/mysqld.log'
$config_file = '/etc/my.cnf'
$includedir = '/etc/my.cnf.d'
$pidfile = '/var/run/mysqld/mysqld.pid'
$daemon_dev_package_name = 'mysql-devel'
}
$basedir = '/usr'
$datadir = '/var/lib/mysql'
$root_group = 'root'
$mysql_group = 'mysql'
$socket = '/var/lib/mysql/mysql.sock'
$ssl_ca = '/etc/mysql/cacert.pem'
$ssl_cert = '/etc/mysql/server-cert.pem'
$ssl_key = '/etc/mysql/server-key.pem'
$tmpdir = '/tmp'
# mysql::bindings
$java_package_name = 'mysql-connector-java'
$perl_package_name = 'perl-DBD-MySQL'
$php_package_name = 'php-mysql'
$python_package_name = 'MySQL-python'
$ruby_package_name = 'ruby-mysql'
$client_dev_package_name = undef
}
'Suse': {
case $::operatingsystem {
'OpenSuSE': {
if versioncmp( $::operatingsystemmajrelease, '12' ) >= 0 {
$client_package_name = 'mariadb-client'
$server_package_name = 'mariadb'
# First service start fails if this is set. Runs fine without
# it being set, in any case. Leaving it as-is for the mysql.
$basedir = undef
} else {
$client_package_name = 'mysql-community-server-client'
$server_package_name = 'mysql-community-server'
$basedir = '/usr'
}
}
'SLES','SLED': {
if versioncmp($::operatingsystemrelease, '12') >= 0 {
$client_package_name = 'mariadb-client'
$server_package_name = 'mariadb'
$basedir = undef
} else {
$client_package_name = 'mysql-client'
$server_package_name = 'mysql'
$basedir = '/usr'
}
}
default: {
fail("Unsupported platform: puppetlabs-${module_name} currently doesn't support ${::operatingsystem}")
}
}
$config_file = '/etc/my.cnf'
$includedir = '/etc/my.cnf.d'
$datadir = '/var/lib/mysql'
$log_error = $::operatingsystem ? {
/OpenSuSE/ => '/var/log/mysql/mysqld.log',
/(SLES|SLED)/ => '/var/log/mysqld.log',
}
$pidfile = $::operatingsystem ? {
/OpenSuSE/ => '/var/run/mysql/mysqld.pid',
/(SLES|SLED)/ => '/var/lib/mysql/mysqld.pid',
}
$root_group = 'root'
$mysql_group = 'mysql'
$server_service_name = 'mysql'
$socket = $::operatingsystem ? {
/OpenSuSE/ => '/var/run/mysql/mysql.sock',
/(SLES|SLED)/ => '/var/lib/mysql/mysql.sock',
}
$ssl_ca = '/etc/mysql/cacert.pem'
$ssl_cert = '/etc/mysql/server-cert.pem'
$ssl_key = '/etc/mysql/server-key.pem'
$tmpdir = '/tmp'
# mysql::bindings
$java_package_name = 'mysql-connector-java'
$perl_package_name = 'perl-DBD-mysql'
$php_package_name = 'apache2-mod_php53'
$python_package_name = 'python-mysql'
$ruby_package_name = $::operatingsystem ? {
/OpenSuSE/ => 'rubygem-mysql',
/(SLES|SLED)/ => 'ruby-mysql',
}
$client_dev_package_name = 'libmysqlclient-devel'
$daemon_dev_package_name = 'mysql-devel'
}
'Debian': {
$client_package_name = 'mysql-client'
$server_package_name = 'mysql-server'
$basedir = '/usr'
$config_file = '/etc/mysql/my.cnf'
$includedir = '/etc/mysql/conf.d'
$datadir = '/var/lib/mysql'
$log_error = '/var/log/mysql/error.log'
$pidfile = '/var/run/mysqld/mysqld.pid'
$root_group = 'root'
$mysql_group = 'adm'
$server_service_name = 'mysql'
$socket = '/var/run/mysqld/mysqld.sock'
$ssl_ca = '/etc/mysql/cacert.pem'
$ssl_cert = '/etc/mysql/server-cert.pem'
$ssl_key = '/etc/mysql/server-key.pem'
$tmpdir = '/tmp'
# mysql::bindings
$java_package_name = 'libmysql-java'
$perl_package_name = 'libdbd-mysql-perl'
$php_package_name = 'php5-mysql'
$python_package_name = 'python-mysqldb'
$ruby_package_name = $::lsbdistcodename ? {
'trusty' => 'ruby-mysql',
'jessie' => 'ruby-mysql',
default => 'libmysql-ruby',
}
$client_dev_package_name = 'libmysqlclient-dev'
$daemon_dev_package_name = 'libmysqld-dev'
}
'Archlinux': {
$client_package_name = 'mariadb-clients'
$server_package_name = 'mariadb'
$basedir = '/usr'
$config_file = '/etc/mysql/my.cnf'
$datadir = '/var/lib/mysql'
$log_error = '/var/log/mysqld.log'
$pidfile = '/var/run/mysqld/mysqld.pid'
$root_group = 'root'
$mysql_group = 'mysql'
$server_service_name = 'mysqld'
$socket = '/var/lib/mysql/mysql.sock'
$ssl_ca = '/etc/mysql/cacert.pem'
$ssl_cert = '/etc/mysql/server-cert.pem'
$ssl_key = '/etc/mysql/server-key.pem'
$tmpdir = '/tmp'
# mysql::bindings
$java_package_name = 'mysql-connector-java'
$perl_package_name = 'perl-dbd-mysql'
$php_package_name = undef
$python_package_name = 'mysql-python'
$ruby_package_name = 'mysql-ruby'
}
'Gentoo': {
$client_package_name = 'virtual/mysql'
$server_package_name = 'virtual/mysql'
$basedir = '/usr'
$config_file = '/etc/mysql/my.cnf'
$datadir = '/var/lib/mysql'
$log_error = '/var/log/mysql/mysqld.err'
$pidfile = '/run/mysqld/mysqld.pid'
$root_group = 'root'
$mysql_group = 'mysql'
$server_service_name = 'mysql'
$socket = '/run/mysqld/mysqld.sock'
$ssl_ca = '/etc/mysql/cacert.pem'
$ssl_cert = '/etc/mysql/server-cert.pem'
$ssl_key = '/etc/mysql/server-key.pem'
$tmpdir = '/tmp'
# mysql::bindings
$java_package_name = 'dev-java/jdbc-mysql'
$perl_package_name = 'dev-perl/DBD-mysql'
$php_package_name = undef
$python_package_name = 'dev-python/mysql-python'
$ruby_package_name = 'dev-ruby/mysql-ruby'
}
'FreeBSD': {
$client_package_name = 'databases/mysql56-client'
$server_package_name = 'databases/mysql56-server'
$basedir = '/usr/local'
$config_file = '/usr/local/etc/my.cnf'
$includedir = '/usr/local/etc/my.cnf.d'
$datadir = '/var/db/mysql'
$log_error = '/var/log/mysqld.log'
$pidfile = '/var/run/mysql.pid'
$root_group = 'wheel'
$mysql_group = 'mysql'
$server_service_name = 'mysql-server'
$socket = '/var/db/mysql/mysql.sock'
$ssl_ca = undef
$ssl_cert = undef
$ssl_key = undef
$tmpdir = '/tmp'
# mysql::bindings
$java_package_name = 'databases/mysql-connector-java'
$perl_package_name = 'p5-DBD-mysql'
$php_package_name = 'php5-mysql'
$python_package_name = 'databases/py-MySQLdb'
$ruby_package_name = 'databases/ruby-mysql'
# The libraries installed by these packages are included in client and server packages, no installation required.
$client_dev_package_name = undef
$daemon_dev_package_name = undef
}
'OpenBSD': {
$client_package_name = 'mariadb-client'
$server_package_name = 'mariadb-server'
$basedir = '/usr/local'
$config_file = '/etc/my.cnf'
$includedir = undef
$datadir = '/var/mysql'
$log_error = "/var/mysql/${::hostname}.err"
$pidfile = '/var/mysql/mysql.pid'
$root_group = 'wheel'
$mysql_group = '_mysql'
$server_service_name = 'mysqld'
$socket = '/var/run/mysql/mysql.sock'
$ssl_ca = undef
$ssl_cert = undef
$ssl_key = undef
$tmpdir = '/tmp'
# mysql::bindings
$java_package_name = undef
$perl_package_name = 'p5-DBD-mysql'
$php_package_name = 'php-mysql'
$python_package_name = 'py-mysql'
$ruby_package_name = 'ruby-mysql'
# The libraries installed by these packages are included in client and server packages, no installation required.
$client_dev_package_name = undef
$daemon_dev_package_name = undef
}
'Solaris': {
$client_package_name = 'database/mysql-55/client'
$server_package_name = 'database/mysql-55'
$basedir = undef
$config_file = '/etc/mysql/5.5/my.cnf'
$datadir = '/var/mysql/5.5/data'
$log_error = "/var/mysql/5.5/data/${::hostname}.err"
$pidfile = "/var/mysql/5.5/data/${::hostname}.pid"
$root_group = 'bin'
$server_service_name = 'application/database/mysql:version_55'
$socket = '/tmp/mysql.sock'
$ssl_ca = undef
$ssl_cert = undef
$ssl_key = undef
$tmpdir = '/tmp'
# mysql::bindings
$java_package_name = undef
$perl_package_name = undef
$php_package_name = 'web/php-53/extension/php-mysql'
$python_package_name = 'library/python/python-mysql'
$ruby_package_name = undef
# The libraries installed by these packages are included in client and server packages, no installation required.
$client_dev_package_name = undef
$daemon_dev_package_name = undef
}
default: {
case $::operatingsystem {
'Amazon': {
$client_package_name = 'mysql'
$server_package_name = 'mysql-server'
$basedir = '/usr'
$config_file = '/etc/my.cnf'
$includedir = '/etc/my.cnf.d'
$datadir = '/var/lib/mysql'
$log_error = '/var/log/mysqld.log'
$pidfile = '/var/run/mysqld/mysqld.pid'
$root_group = 'root'
$mysql_group = 'mysql'
$server_service_name = 'mysqld'
$socket = '/var/lib/mysql/mysql.sock'
$ssl_ca = '/etc/mysql/cacert.pem'
$ssl_cert = '/etc/mysql/server-cert.pem'
$ssl_key = '/etc/mysql/server-key.pem'
$tmpdir = '/tmp'
# mysql::bindings
$java_package_name = 'mysql-connector-java'
$perl_package_name = 'perl-DBD-MySQL'
$php_package_name = 'php-mysql'
$python_package_name = 'MySQL-python'
$ruby_package_name = 'ruby-mysql'
# The libraries installed by these packages are included in client and server packages, no installation required.
$client_dev_package_name = undef
$daemon_dev_package_name = undef
}
default: {
fail("Unsupported platform: puppetlabs-${module_name} currently doesn't support ${::osfamily} or ${::operatingsystem}")
}
}
}
}
case $::operatingsystem {
'Ubuntu': {
if versioncmp($::operatingsystemmajrelease, '14.10') > 0 {
$server_service_provider = 'systemd'
} else {
$server_service_provider = 'upstart'
}
}
default: {
$server_service_provider = undef
}
}
$default_options = {
'client' => {
'port' => '3306',
'socket' => $mysql::params::socket,
},
'mysqld_safe' => {
'nice' => '0',
'log-error' => $mysql::params::log_error,
'socket' => $mysql::params::socket,
},
'mysqld-5.0' => {
'myisam-recover' => 'BACKUP',
},
'mysqld-5.1' => {
'myisam-recover' => 'BACKUP',
},
'mysqld-5.5' => {
'myisam-recover' => 'BACKUP',
},
'mysqld-5.6' => {
'myisam-recover-options' => 'BACKUP',
},
'mysqld-5.7' => {
'myisam-recover-options' => 'BACKUP',
},
'mysqld' => {
'basedir' => $mysql::params::basedir,
'bind-address' => '127.0.0.1',
'datadir' => $mysql::params::datadir,
'expire_logs_days' => '10',
'key_buffer_size' => '16M',
'log-error' => $mysql::params::log_error,
'max_allowed_packet' => '16M',
'max_binlog_size' => '100M',
'max_connections' => '151',
'pid-file' => $mysql::params::pidfile,
'port' => '3306',
'query_cache_limit' => '1M',
'query_cache_size' => '16M',
'skip-external-locking' => true,
'socket' => $mysql::params::socket,
'ssl' => false,
'ssl-ca' => $mysql::params::ssl_ca,
'ssl-cert' => $mysql::params::ssl_cert,
'ssl-key' => $mysql::params::ssl_key,
'ssl-disable' => false,
'thread_cache_size' => '8',
'thread_stack' => '256K',
'tmpdir' => $mysql::params::tmpdir,
'user' => 'mysql',
},
'mysqldump' => {
'max_allowed_packet' => '16M',
'quick' => true,
'quote-names' => true,
},
'isamchk' => {
'key_buffer_size' => '16M',
},
}
## Additional graceful failures
if $::osfamily == 'RedHat' and $::operatingsystemmajrelease == '4' and $::operatingsystem != 'Amazon' {
fail("Unsupported platform: puppetlabs-${module_name} only supports RedHat 5.0 and beyond")
}
}