dev/provisioning/modules/mysql/manifests/params.pp
changeset 28 b0b56e0f8c7f
child 146 dc4d1cdc47e0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/mysql/manifests/params.pp	Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,411 @@
+# 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
+
+
+  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'
+      } 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'
+      }
+
+      $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
+      $daemon_dev_package_name = 'mysql-devel'
+    }
+
+    'Suse': {
+      case $::operatingsystem {
+        'OpenSuSE': {
+          $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             = 'mysql'
+      $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': {
+      $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'                  => {
+      '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',
+      'myisam_recover'        => 'BACKUP',
+      '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' {
+    fail("Unsupported platform: puppetlabs-${module_name} only supports RedHat 5.0 and beyond")
+  }
+}