dev/provisioning/modules/mysql/manifests/params.pp
changeset 28 b0b56e0f8c7f
child 146 dc4d1cdc47e0
equal deleted inserted replaced
27:a2342f26c9de 28:b0b56e0f8c7f
       
     1 # Private class: See README.md.
       
     2 class mysql::params {
       
     3 
       
     4   $manage_config_file     = true
       
     5   $purge_conf_dir         = false
       
     6   $restart                = false
       
     7   $root_password          = 'UNSET'
       
     8   $install_secret_file    = '/.mysql_secret'
       
     9   $server_package_ensure  = 'present'
       
    10   $server_package_manage  = true
       
    11   $server_service_manage  = true
       
    12   $server_service_enabled = true
       
    13   $client_package_ensure  = 'present'
       
    14   $client_package_manage  = true
       
    15   $create_root_user       = true
       
    16   $create_root_my_cnf     = true
       
    17   # mysql::bindings
       
    18   $bindings_enable             = false
       
    19   $java_package_ensure         = 'present'
       
    20   $java_package_provider       = undef
       
    21   $perl_package_ensure         = 'present'
       
    22   $perl_package_provider       = undef
       
    23   $php_package_ensure          = 'present'
       
    24   $php_package_provider        = undef
       
    25   $python_package_ensure       = 'present'
       
    26   $python_package_provider     = undef
       
    27   $ruby_package_ensure         = 'present'
       
    28   $ruby_package_provider       = undef
       
    29   $client_dev_package_ensure   = 'present'
       
    30   $client_dev_package_provider = undef
       
    31   $daemon_dev_package_ensure   = 'present'
       
    32   $daemon_dev_package_provider = undef
       
    33 
       
    34 
       
    35   case $::osfamily {
       
    36     'RedHat': {
       
    37       case $::operatingsystem {
       
    38         'Fedora': {
       
    39           if versioncmp($::operatingsystemrelease, '19') >= 0 or $::operatingsystemrelease == 'Rawhide' {
       
    40             $provider = 'mariadb'
       
    41           } else {
       
    42             $provider = 'mysql'
       
    43           }
       
    44         }
       
    45         /^(RedHat|CentOS|Scientific|OracleLinux)$/: {
       
    46           if versioncmp($::operatingsystemmajrelease, '7') >= 0 {
       
    47             $provider = 'mariadb'
       
    48           } else {
       
    49             $provider = 'mysql'
       
    50           }
       
    51         }
       
    52         default: {
       
    53           $provider = 'mysql'
       
    54         }
       
    55       }
       
    56 
       
    57       if $provider == 'mariadb' {
       
    58         $client_package_name = 'mariadb'
       
    59         $server_package_name = 'mariadb-server'
       
    60         $server_service_name = 'mariadb'
       
    61         $log_error           = '/var/log/mariadb/mariadb.log'
       
    62         $config_file         = '/etc/my.cnf.d/server.cnf'
       
    63         # mariadb package by default has !includedir set in my.cnf to /etc/my.cnf.d
       
    64         $includedir          = undef
       
    65         $pidfile             = '/var/run/mariadb/mariadb.pid'
       
    66       } else {
       
    67         $client_package_name = 'mysql'
       
    68         $server_package_name = 'mysql-server'
       
    69         $server_service_name = 'mysqld'
       
    70         $log_error           = '/var/log/mysqld.log'
       
    71         $config_file         = '/etc/my.cnf'
       
    72         $includedir          = '/etc/my.cnf.d'
       
    73         $pidfile             = '/var/run/mysqld/mysqld.pid'
       
    74       }
       
    75 
       
    76       $basedir                 = '/usr'
       
    77       $datadir                 = '/var/lib/mysql'
       
    78       $root_group              = 'root'
       
    79       $mysql_group             = 'mysql'
       
    80       $socket                  = '/var/lib/mysql/mysql.sock'
       
    81       $ssl_ca                  = '/etc/mysql/cacert.pem'
       
    82       $ssl_cert                = '/etc/mysql/server-cert.pem'
       
    83       $ssl_key                 = '/etc/mysql/server-key.pem'
       
    84       $tmpdir                  = '/tmp'
       
    85       # mysql::bindings
       
    86       $java_package_name       = 'mysql-connector-java'
       
    87       $perl_package_name       = 'perl-DBD-MySQL'
       
    88       $php_package_name        = 'php-mysql'
       
    89       $python_package_name     = 'MySQL-python'
       
    90       $ruby_package_name       = 'ruby-mysql'
       
    91       $client_dev_package_name = undef
       
    92       $daemon_dev_package_name = 'mysql-devel'
       
    93     }
       
    94 
       
    95     'Suse': {
       
    96       case $::operatingsystem {
       
    97         'OpenSuSE': {
       
    98           $client_package_name = 'mysql-community-server-client'
       
    99           $server_package_name = 'mysql-community-server'
       
   100           $basedir             = '/usr'
       
   101         }
       
   102         'SLES','SLED': {
       
   103           if versioncmp($::operatingsystemrelease, '12') >= 0 {
       
   104             $client_package_name = 'mariadb-client'
       
   105             $server_package_name = 'mariadb'
       
   106             $basedir             = undef
       
   107           } else {
       
   108             $client_package_name = 'mysql-client'
       
   109             $server_package_name = 'mysql'
       
   110             $basedir             = '/usr'
       
   111           }
       
   112         }
       
   113         default: {
       
   114           fail("Unsupported platform: puppetlabs-${module_name} currently doesn't support ${::operatingsystem}")
       
   115         }
       
   116       }
       
   117       $config_file         = '/etc/my.cnf'
       
   118       $includedir          = '/etc/my.cnf.d'
       
   119       $datadir             = '/var/lib/mysql'
       
   120       $log_error           = $::operatingsystem ? {
       
   121         /OpenSuSE/         => '/var/log/mysql/mysqld.log',
       
   122         /(SLES|SLED)/      => '/var/log/mysqld.log',
       
   123       }
       
   124       $pidfile             = $::operatingsystem ? {
       
   125         /OpenSuSE/         => '/var/run/mysql/mysqld.pid',
       
   126         /(SLES|SLED)/      => '/var/lib/mysql/mysqld.pid',
       
   127       }
       
   128       $root_group          = 'root'
       
   129       $mysql_group         = 'mysql'
       
   130       $server_service_name = 'mysql'
       
   131       $socket              = $::operatingsystem ? {
       
   132         /OpenSuSE/         => '/var/run/mysql/mysql.sock',
       
   133         /(SLES|SLED)/      => '/var/lib/mysql/mysql.sock',
       
   134       }
       
   135       $ssl_ca              = '/etc/mysql/cacert.pem'
       
   136       $ssl_cert            = '/etc/mysql/server-cert.pem'
       
   137       $ssl_key             = '/etc/mysql/server-key.pem'
       
   138       $tmpdir              = '/tmp'
       
   139       # mysql::bindings
       
   140       $java_package_name   = 'mysql-connector-java'
       
   141       $perl_package_name   = 'perl-DBD-mysql'
       
   142       $php_package_name    = 'apache2-mod_php53'
       
   143       $python_package_name = 'python-mysql'
       
   144       $ruby_package_name   = $::operatingsystem ? {
       
   145         /OpenSuSE/         => 'rubygem-mysql',
       
   146         /(SLES|SLED)/      => 'ruby-mysql',
       
   147       }
       
   148       $client_dev_package_name = 'libmysqlclient-devel'
       
   149       $daemon_dev_package_name = 'mysql-devel'
       
   150     }
       
   151 
       
   152     'Debian': {
       
   153       $client_package_name     = 'mysql-client'
       
   154       $server_package_name     = 'mysql-server'
       
   155 
       
   156       $basedir                 = '/usr'
       
   157       $config_file             = '/etc/mysql/my.cnf'
       
   158       $includedir              = '/etc/mysql/conf.d'
       
   159       $datadir                 = '/var/lib/mysql'
       
   160       $log_error               = '/var/log/mysql/error.log'
       
   161       $pidfile                 = '/var/run/mysqld/mysqld.pid'
       
   162       $root_group              = 'root'
       
   163       $mysql_group             = 'mysql'
       
   164       $server_service_name     = 'mysql'
       
   165       $socket                  = '/var/run/mysqld/mysqld.sock'
       
   166       $ssl_ca                  = '/etc/mysql/cacert.pem'
       
   167       $ssl_cert                = '/etc/mysql/server-cert.pem'
       
   168       $ssl_key                 = '/etc/mysql/server-key.pem'
       
   169       $tmpdir                  = '/tmp'
       
   170       # mysql::bindings
       
   171       $java_package_name   = 'libmysql-java'
       
   172       $perl_package_name   = 'libdbd-mysql-perl'
       
   173       $php_package_name    = 'php5-mysql'
       
   174       $python_package_name = 'python-mysqldb'
       
   175       $ruby_package_name   = $::lsbdistcodename ? {
       
   176         'trusty'           => 'ruby-mysql',
       
   177         'jessie'           => 'ruby-mysql',
       
   178         default            => 'libmysql-ruby',
       
   179       }
       
   180       $client_dev_package_name = 'libmysqlclient-dev'
       
   181       $daemon_dev_package_name = 'libmysqld-dev'
       
   182     }
       
   183 
       
   184     'Archlinux': {
       
   185       $client_package_name = 'mariadb-clients'
       
   186       $server_package_name = 'mariadb'
       
   187       $basedir             = '/usr'
       
   188       $config_file         = '/etc/mysql/my.cnf'
       
   189       $datadir             = '/var/lib/mysql'
       
   190       $log_error           = '/var/log/mysqld.log'
       
   191       $pidfile             = '/var/run/mysqld/mysqld.pid'
       
   192       $root_group          = 'root'
       
   193       $mysql_group         = 'mysql'
       
   194       $server_service_name = 'mysqld'
       
   195       $socket              = '/var/lib/mysql/mysql.sock'
       
   196       $ssl_ca              = '/etc/mysql/cacert.pem'
       
   197       $ssl_cert            = '/etc/mysql/server-cert.pem'
       
   198       $ssl_key             = '/etc/mysql/server-key.pem'
       
   199       $tmpdir              = '/tmp'
       
   200       # mysql::bindings
       
   201       $java_package_name   = 'mysql-connector-java'
       
   202       $perl_package_name   = 'perl-dbd-mysql'
       
   203       $php_package_name    = undef
       
   204       $python_package_name = 'mysql-python'
       
   205       $ruby_package_name   = 'mysql-ruby'
       
   206     }
       
   207 
       
   208     'Gentoo': {
       
   209       $client_package_name = 'virtual/mysql'
       
   210       $server_package_name = 'virtual/mysql'
       
   211       $basedir             = '/usr'
       
   212       $config_file         = '/etc/mysql/my.cnf'
       
   213       $datadir             = '/var/lib/mysql'
       
   214       $log_error           = '/var/log/mysql/mysqld.err'
       
   215       $pidfile             = '/run/mysqld/mysqld.pid'
       
   216       $root_group          = 'root'
       
   217       $mysql_group         = 'mysql'
       
   218       $server_service_name = 'mysql'
       
   219       $socket              = '/run/mysqld/mysqld.sock'
       
   220       $ssl_ca              = '/etc/mysql/cacert.pem'
       
   221       $ssl_cert            = '/etc/mysql/server-cert.pem'
       
   222       $ssl_key             = '/etc/mysql/server-key.pem'
       
   223       $tmpdir              = '/tmp'
       
   224       # mysql::bindings
       
   225       $java_package_name   = 'dev-java/jdbc-mysql'
       
   226       $perl_package_name   = 'dev-perl/DBD-mysql'
       
   227       $php_package_name    = undef
       
   228       $python_package_name = 'dev-python/mysql-python'
       
   229       $ruby_package_name   = 'dev-ruby/mysql-ruby'
       
   230     }
       
   231 
       
   232     'FreeBSD': {
       
   233       $client_package_name = 'databases/mysql56-client'
       
   234       $server_package_name = 'databases/mysql56-server'
       
   235       $basedir             = '/usr/local'
       
   236       $config_file         = '/usr/local/etc/my.cnf'
       
   237       $includedir          = '/usr/local/etc/my.cnf.d'
       
   238       $datadir             = '/var/db/mysql'
       
   239       $log_error           = '/var/log/mysqld.log'
       
   240       $pidfile             = '/var/run/mysql.pid'
       
   241       $root_group          = 'wheel'
       
   242       $mysql_group         = 'mysql'
       
   243       $server_service_name = 'mysql-server'
       
   244       $socket              = '/var/db/mysql/mysql.sock'
       
   245       $ssl_ca              = undef
       
   246       $ssl_cert            = undef
       
   247       $ssl_key             = undef
       
   248       $tmpdir              = '/tmp'
       
   249       # mysql::bindings
       
   250       $java_package_name   = 'databases/mysql-connector-java'
       
   251       $perl_package_name   = 'p5-DBD-mysql'
       
   252       $php_package_name    = 'php5-mysql'
       
   253       $python_package_name = 'databases/py-MySQLdb'
       
   254       $ruby_package_name   = 'databases/ruby-mysql'
       
   255       # The libraries installed by these packages are included in client and server packages, no installation required.
       
   256       $client_dev_package_name     = undef
       
   257       $daemon_dev_package_name     = undef
       
   258     }
       
   259 
       
   260     'OpenBSD': {
       
   261       $client_package_name = 'mariadb-client'
       
   262       $server_package_name = 'mariadb-server'
       
   263       $basedir             = '/usr/local'
       
   264       $config_file         = '/etc/my.cnf'
       
   265       $includedir          = undef
       
   266       $datadir             = '/var/mysql'
       
   267       $log_error           = "/var/mysql/${::hostname}.err"
       
   268       $pidfile             = '/var/mysql/mysql.pid'
       
   269       $root_group          = 'wheel'
       
   270       $mysql_group         = '_mysql'
       
   271       $server_service_name = 'mysqld'
       
   272       $socket              = '/var/run/mysql/mysql.sock'
       
   273       $ssl_ca              = undef
       
   274       $ssl_cert            = undef
       
   275       $ssl_key             = undef
       
   276       $tmpdir              = '/tmp'
       
   277       # mysql::bindings
       
   278       $java_package_name   = undef
       
   279       $perl_package_name   = 'p5-DBD-mysql'
       
   280       $php_package_name    = 'php-mysql'
       
   281       $python_package_name = 'py-mysql'
       
   282       $ruby_package_name   = 'ruby-mysql'
       
   283       # The libraries installed by these packages are included in client and server packages, no installation required.
       
   284       $client_dev_package_name     = undef
       
   285       $daemon_dev_package_name     = undef
       
   286     }
       
   287 
       
   288     'Solaris': {
       
   289       $client_package_name = 'database/mysql-55/client'
       
   290       $server_package_name = 'database/mysql-55'
       
   291       $basedir             = undef
       
   292       $config_file         = '/etc/mysql/5.5/my.cnf'
       
   293       $datadir             = '/var/mysql/5.5/data'
       
   294       $log_error           = "/var/mysql/5.5/data/${::hostname}.err"
       
   295       $pidfile             = "/var/mysql/5.5/data/${::hostname}.pid"
       
   296       $root_group          = 'bin'
       
   297       $server_service_name = 'application/database/mysql:version_55'
       
   298       $socket              = '/tmp/mysql.sock'
       
   299       $ssl_ca              = undef
       
   300       $ssl_cert            = undef
       
   301       $ssl_key             = undef
       
   302       $tmpdir              = '/tmp'
       
   303       # mysql::bindings
       
   304       $java_package_name   = undef
       
   305       $perl_package_name   = undef
       
   306       $php_package_name    = 'web/php-53/extension/php-mysql'
       
   307       $python_package_name = 'library/python/python-mysql'
       
   308       $ruby_package_name   = undef
       
   309       # The libraries installed by these packages are included in client and server packages, no installation required.
       
   310       $client_dev_package_name     = undef
       
   311       $daemon_dev_package_name     = undef
       
   312     }
       
   313 
       
   314     default: {
       
   315       case $::operatingsystem {
       
   316         'Amazon': {
       
   317           $client_package_name = 'mysql'
       
   318           $server_package_name = 'mysql-server'
       
   319           $basedir             = '/usr'
       
   320           $config_file         = '/etc/my.cnf'
       
   321           $includedir          = '/etc/my.cnf.d'
       
   322           $datadir             = '/var/lib/mysql'
       
   323           $log_error           = '/var/log/mysqld.log'
       
   324           $pidfile             = '/var/run/mysqld/mysqld.pid'
       
   325           $root_group          = 'root'
       
   326           $mysql_group         = 'mysql'
       
   327           $server_service_name = 'mysqld'
       
   328           $socket              = '/var/lib/mysql/mysql.sock'
       
   329           $ssl_ca              = '/etc/mysql/cacert.pem'
       
   330           $ssl_cert            = '/etc/mysql/server-cert.pem'
       
   331           $ssl_key             = '/etc/mysql/server-key.pem'
       
   332           $tmpdir              = '/tmp'
       
   333           # mysql::bindings
       
   334           $java_package_name   = 'mysql-connector-java'
       
   335           $perl_package_name   = 'perl-DBD-MySQL'
       
   336           $php_package_name    = 'php-mysql'
       
   337           $python_package_name = 'MySQL-python'
       
   338           $ruby_package_name   = 'ruby-mysql'
       
   339           # The libraries installed by these packages are included in client and server packages, no installation required.
       
   340           $client_dev_package_name     = undef
       
   341           $daemon_dev_package_name     = undef
       
   342         }
       
   343 
       
   344         default: {
       
   345           fail("Unsupported platform: puppetlabs-${module_name} currently doesn't support ${::osfamily} or ${::operatingsystem}")
       
   346         }
       
   347       }
       
   348     }
       
   349   }
       
   350 
       
   351   case $::operatingsystem {
       
   352     'Ubuntu': {
       
   353       $server_service_provider = upstart
       
   354     }
       
   355     default: {
       
   356       $server_service_provider = undef
       
   357     }
       
   358   }
       
   359 
       
   360   $default_options = {
       
   361     'client'          => {
       
   362       'port'          => '3306',
       
   363       'socket'        => $mysql::params::socket,
       
   364     },
       
   365     'mysqld_safe'        => {
       
   366       'nice'             => '0',
       
   367       'log-error'        => $mysql::params::log_error,
       
   368       'socket'           => $mysql::params::socket,
       
   369     },
       
   370     'mysqld'                  => {
       
   371       'basedir'               => $mysql::params::basedir,
       
   372       'bind-address'          => '127.0.0.1',
       
   373       'datadir'               => $mysql::params::datadir,
       
   374       'expire_logs_days'      => '10',
       
   375       'key_buffer_size'       => '16M',
       
   376       'log-error'             => $mysql::params::log_error,
       
   377       'max_allowed_packet'    => '16M',
       
   378       'max_binlog_size'       => '100M',
       
   379       'max_connections'       => '151',
       
   380       'myisam_recover'        => 'BACKUP',
       
   381       'pid-file'              => $mysql::params::pidfile,
       
   382       'port'                  => '3306',
       
   383       'query_cache_limit'     => '1M',
       
   384       'query_cache_size'      => '16M',
       
   385       'skip-external-locking' => true,
       
   386       'socket'                => $mysql::params::socket,
       
   387       'ssl'                   => false,
       
   388       'ssl-ca'                => $mysql::params::ssl_ca,
       
   389       'ssl-cert'              => $mysql::params::ssl_cert,
       
   390       'ssl-key'               => $mysql::params::ssl_key,
       
   391       'ssl-disable'           => false,
       
   392       'thread_cache_size'     => '8',
       
   393       'thread_stack'          => '256K',
       
   394       'tmpdir'                => $mysql::params::tmpdir,
       
   395       'user'                  => 'mysql',
       
   396     },
       
   397     'mysqldump'             => {
       
   398       'max_allowed_packet'  => '16M',
       
   399       'quick'               => true,
       
   400       'quote-names'         => true,
       
   401     },
       
   402     'isamchk'      => {
       
   403       'key_buffer_size' => '16M',
       
   404     },
       
   405   }
       
   406 
       
   407   ## Additional graceful failures
       
   408   if $::osfamily == 'RedHat' and $::operatingsystemmajrelease == '4' {
       
   409     fail("Unsupported platform: puppetlabs-${module_name} only supports RedHat 5.0 and beyond")
       
   410   }
       
   411 }