diff options
Diffstat (limited to 'manifests/server')
-rw-r--r-- | manifests/server/account_security.pp | 8 | ||||
-rw-r--r-- | manifests/server/base.pp | 161 | ||||
-rw-r--r-- | manifests/server/clientpackage.pp | 4 | ||||
-rw-r--r-- | manifests/server/cron/backup.pp | 37 | ||||
-rw-r--r-- | manifests/server/munin/base.pp | 20 | ||||
-rw-r--r-- | manifests/server/munin/debian.pp | 45 | ||||
-rw-r--r-- | manifests/server/munin/default.pp | 73 | ||||
-rw-r--r-- | manifests/server/nagios.pp | 21 |
8 files changed, 182 insertions, 187 deletions
diff --git a/manifests/server/account_security.pp b/manifests/server/account_security.pp new file mode 100644 index 0000000..a17f0b3 --- /dev/null +++ b/manifests/server/account_security.pp @@ -0,0 +1,8 @@ +# some installations have some default users which are not required. +# We remove them here. You can subclass this class to overwrite this behavior. +class mysql::server::account_security { + mysql_user{ [ "root@${::fqdn}", 'root@127.0.0.1', "@${::fqdn}", '@localhost', '@%' ]: + ensure => 'absent', + require => Exec['mysql_set_rootpw'], + } +} diff --git a/manifests/server/base.pp b/manifests/server/base.pp index 07b26b8..8bdd865 100644 --- a/manifests/server/base.pp +++ b/manifests/server/base.pp @@ -1,83 +1,90 @@ +# manage the common things of +# a mysql server class mysql::server::base { - package { mysql-server: - ensure => present, - } - file { 'mysql_main_cnf': - path => '/etc/mysql/my.cnf', - source => [ - "puppet:///modules/site-mysql/${fqdn}/my.cnf", - "puppet:///modules/site-mysql/my.cnf.${operatingsystem}.{lsbdistcodename}", - "puppet:///modules/site-mysql/my.cnf.${operatingsystem}", - "puppet:///modules/site-mysql/my.cnf", - "puppet:///modules/mysql/config/my.cnf.${operatingsystem}.{lsbdistcodename}", - "puppet:///modules/mysql/config/my.cnf.${operatingsystem}", - "puppet:///modules/mysql/config/my.cnf" - ], - ensure => file, - require => Package['mysql-server'], - notify => Service['mysql'], - owner => root, group => 0, mode => 0644; - } - - file { 'mysql_data_dir': - path => '/var/lib/mysql/data', - ensure => directory, - require => Package['mysql-server'], - before => File['mysql_main_cnf'], - owner => mysql, group => mysql, mode => 0755; - } + package {'mysql-server': + ensure => present, + } + file { 'mysql_main_cnf': + path => '/etc/mysql/my.cnf', + source => [ + "puppet:///modules/site_mysql/${::fqdn}/my.cnf", + "puppet:///modules/site_mysql/my.cnf.${::operatingsystem}.{lsbdistcodename}", + "puppet:///modules/site_mysql/my.cnf.${::operatingsystem}", + 'puppet:///modules/site_mysql/my.cnf', + "puppet:///modules/mysql/config/my.cnf.${::operatingsystem}.{lsbdistcodename}", + "puppet:///modules/mysql/config/my.cnf.${::operatingsystem}", + 'puppet:///modules/mysql/config/my.cnf' + ], + require => Package['mysql-server'], + notify => Service['mysql'], + owner => root, + group => 0, + mode => '0644'; + } - file { 'mysql_ibdata1': - path => '/var/lib/mysql/data/ibdata1', - ensure => file, - require => Package['mysql-server'], - before => File['mysql_setmysqlpass.sh'], - owner => mysql, group => mysql, mode => 0660; - } + file { + 'mysql_data_dir': + ensure => directory, + path => '/var/lib/mysql/data', + require => Package['mysql-server'], + before => File['mysql_main_cnf'], + owner => mysql, + group => mysql, + mode => '0755'; + 'mysql_ibdata1': + path => '/var/lib/mysql/data/ibdata1', + require => Package['mysql-server'], + before => File['mysql_setmysqlpass.sh'], + owner => mysql, + group => mysql, + mode => '0660'; + 'mysql_setmysqlpass.sh': + path => '/usr/local/sbin/setmysqlpass.sh', + source => "puppet:///modules/mysql/scripts/${::operatingsystem}/setmysqlpass.sh", + require => Package['mysql-server'], + owner => root, + group => 0, + mode => '0500'; + 'mysql_root_cnf': + path => '/root/.my.cnf', + content => template('mysql/root/my.cnf.erb'), + require => [ Package['mysql-server'] ], + notify => Exec['mysql_set_rootpw'], + owner => root, + group => 0, + mode => '0400'; + } - case $mysql_rootpw { - '': { fail("You need to define a mysql root password! Please set \$mysql_rootpw in your site.pp or host config") } - } - - file { 'mysql_setmysqlpass.sh': - path => '/usr/local/sbin/setmysqlpass.sh', - source => "puppet:///modules/mysql/scripts/${operatingsystem}/setmysqlpass.sh", - require => Package['mysql-server'], - owner => root, group => 0, mode => 0500; - } - - file { 'mysql_root_cnf': - path => '/root/.my.cnf', - content => template('mysql/root/my.cnf.erb'), - require => [ Package['mysql-server'] ], - owner => root, group => 0, mode => 0400, - notify => Exec['mysql_set_rootpw'], - } - - exec { 'mysql_set_rootpw': - command => '/usr/local/sbin/setmysqlpass.sh', - unless => '/usr/bin/mysqladmin -uroot status > /dev/null', - require => [ File['mysql_setmysqlpass.sh'], Package['mysql-server'] ], - refreshonly => true, - } - - if ($mysql_backup_cron) { - include mysql::server::cron::backup - } - - if ($mysql_optimize_cron) { - include mysql::server::cron::optimize - } - - service { 'mysql': - ensure => running, - enable => true, - hasstatus => true, - require => Package['mysql-server'], - } + exec { 'mysql_set_rootpw': + command => '/usr/local/sbin/setmysqlpass.sh', + unless => 'mysqladmin -uroot status > /dev/null', + require => [ File['mysql_setmysqlpass.sh'], Service['mysql'] ], + # this is for security so that we only change the password + # if the password file itself has changed + refreshonly => true, + } + + if $mysql::server::backup_cron { + include mysql::server::cron::backup + } + + if $mysql::server::optimize_cron { + include mysql::server::cron::optimize + } + + service { 'mysql': + ensure => running, + enable => true, + hasstatus => true, + require => Package['mysql-server'], + } + + if $::mysql_exists == 'true' { + include mysql::server::account_security # Collect all databases and users - Mysql_database<<| tag == "mysql_${fqdn}" |>> - Mysql_user<<| tag == "mysql_${fqdn}" |>> - Mysql_grant<<| tag == "mysql_${fqdn}" |>> + Mysql_database<<| tag == "mysql_${::fqdn}" |>> + Mysql_user<<| tag == "mysql_${::fqdn}" |>> + Mysql_grant<<| tag == "mysql_${::fqdn}" |>> + } } diff --git a/manifests/server/clientpackage.pp b/manifests/server/clientpackage.pp index 8f317c1..1d20ae9 100644 --- a/manifests/server/clientpackage.pp +++ b/manifests/server/clientpackage.pp @@ -1,5 +1,7 @@ class mysql::server::clientpackage inherits mysql::server::base { - include mysql::client + class { 'mysql::client': + manage_shorewall => $mysql::server::manage_shorewall + } File['mysql_setmysqlpass.sh']{ require +> Package['mysql-client'], } diff --git a/manifests/server/cron/backup.pp b/manifests/server/cron/backup.pp index c1e84d1..194b4cd 100644 --- a/manifests/server/cron/backup.pp +++ b/manifests/server/cron/backup.pp @@ -1,27 +1,18 @@ class mysql::server::cron::backup { - - $real_mysql_backup_dir = $mysql_backup_dir ? { - '' => '/var/backups/mysql', - default => $mysql_backup_dir, - } - - case $mysql_manage_backup_dir { - false: { info("We don't manage \$mysql_backup_dir ($mysql_backup_dir)") } - default: { - file { 'mysql_backup_dir': - path => $real_mysql_backup_dir, - ensure => directory, - before => Cron['mysql_backup_cron'], - owner => root, group => 0, mode => 0700; - } - } + if $mysql::server::manage_backup_dir { + file { 'mysql_backup_dir': + path => $mysql::server::backup_dir, + ensure => directory, + before => Cron['mysql_backup_cron'], + owner => root, group => 0, mode => 0700; } + } - cron { 'mysql_backup_cron': - command => "/usr/bin/mysqldump --default-character-set=utf8 --all-databases --all --flush-logs --lock-tables --single-transaction | gzip > ${real_mysql_backup_dir}/mysqldump.sql.gz && chmod 600 ${real_mysql_backup_dir}/mysqldump.sql.gz", - user => 'root', - minute => 0, - hour => 1, - require => [ Exec['mysql_set_rootpw'], File['mysql_root_cnf'] ], - } + cron { 'mysql_backup_cron': + command => "/usr/bin/mysqldump --default-character-set=utf8 --all-databases --create-options --flush-logs --lock-tables --single-transaction | gzip > ${mysql::server::backup_dir}/mysqldump.sql.gz && chmod 600 ${mysql::server::backup_dir}/mysqldump.sql.gz", + user => 'root', + minute => 0, + hour => 1, + require => [ Exec['mysql_set_rootpw'], File['mysql_root_cnf'] ], + } } diff --git a/manifests/server/munin/base.pp b/manifests/server/munin/base.pp deleted file mode 100644 index ad4bb8a..0000000 --- a/manifests/server/munin/base.pp +++ /dev/null @@ -1,20 +0,0 @@ -class mysql::server::munin::base { - - file { - "/usr/local/share/munin-plugins/mysql_connections": - source => "puppet:///modules/mysql/munin/mysql_connections", - mode => 0755, owner => root, group => root; - - "/usr/local/share/munin-plugins/mysql_qcache": - source => "puppet:///modules/mysql/munin/mysql_qcache", - mode => 0755, owner => root, group => root; - - "/usr/local/share/munin-plugins/mysql_qcache_mem": - source => "puppet:///modules/mysql/munin/mysql_qcache_mem", - mode => 0755, owner => root, group => root; - - "/usr/local/share/munin-plugins/mysql_size_all": - source => "puppet:///modules/mysql/munin/mysql_size_all", - mode => 0755, owner => root, group => root; - } -} diff --git a/manifests/server/munin/debian.pp b/manifests/server/munin/debian.pp index d1636d5..9ff7863 100644 --- a/manifests/server/munin/debian.pp +++ b/manifests/server/munin/debian.pp @@ -1,14 +1,35 @@ -# manifests/server/munin/debian.pp - -class mysql::server::munin::debian inherits mysql::server::munin::base { - munin::plugin { - [ mysql_bytes, mysql_queries, mysql_slowqueries, mysql_threads ]: - config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", - require => Package['mysql']; - - [ mysql_connections, mysql_qcache, mysql_cache_mem, mysql_size_all ]: - config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", - script_path_in => "/usr/local/share/munin-plugins", - require => Package['mysql']; +# debian way of calling plugins +class mysql::server::munin::debian inherits mysql::server::munin::default { + Munin::Plugin['mysql_bytes']{ + config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", + require => Package['mysql'], + } + Munin::Plugin['mysql_queries']{ + config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", + require => Package['mysql'], + } + Munin::Plugin['mysql_slowqueries']{ + config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", + require => Package['mysql'], + } + Munin::Plugin['mysql_threads']{ + config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", + require => Package['mysql'], + } + Munin::Plugin::Deploy['mysql_connections']{ + config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", + require => Package['mysql'], + } + Munin::Plugin::Deploy['mysql_qcache']{ + config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", + require => Package['mysql'], + } + Munin::Plugin::Deploy['mysql_cache_mem']{ + config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", + require => Package['mysql'], + } + Munin::Plugin::Deploy['mysql_size_all']{ + config => "user root\nenv.mysqlopts --defaults-file=/etc/mysql/debian.cnf", + require => Package['mysql'], } } diff --git a/manifests/server/munin/default.pp b/manifests/server/munin/default.pp index d64c831..11609d2 100644 --- a/manifests/server/munin/default.pp +++ b/manifests/server/munin/default.pp @@ -1,44 +1,37 @@ -# manifests/server/munin/default.pp +# manage plugins +class mysql::server::munin::default { + mysql_user{'munin@localhost': + password_hash => trocla("mysql_munin_${::fqdn}",'mysql','length: 32'), + require => Exec['mysql_set_rootpw'], + } -class mysql::server::munin::default inherits mysql::server::munin::base { - case $munin_mysql_password { - '': { fail("please specify \$munin_mysql_password to enable mysql munin plugin")} - } + mysql_grant{'munin@localhost': + privileges => 'select_priv', + require => Mysql_user['munin@localhost'], + } - mysql_user{'munin@localhost': - password_hash => mysql_password("$munin_mysql_password"), - require => Package['mysql'], - } + $munin_mysql_password = trocla("mysql_munin_${::fqdn}",'plain', 'length: 32') + munin::plugin { + [mysql_queries, mysql_slowqueries]: + config => "env.mysqlopts --user=munin --password='${munin_mysql_password}' -h localhost", + require => Mysql_grant['munin@localhost']; + [mysql_bytes, mysql_threads]: + config => "env.mysqlopts --user=munin --password=${munin_mysql_password} -h localhost", + require => Mysql_grant['munin@localhost']; + } - mysql_grant{'munin@localhost': - privileges => 'select_priv', - require => [ Mysql_user['munin@localhost'], Package['mysql'] ], - } - - munin::plugin { - [ mysql_bytes, mysql_queries, mysql_slowqueries, mysql_threads ]: - config => "env.mysqlopts --user=munin --password=${munin_mysql_password} -h localhost", - require => [ Mysql_grant['munin@localhost'], Mysql_user['munin@localhost'], Package['mysql'] ]; - - [ mysql_connections, mysql_qcache, mysql_qcache_mem, mysql_size_all ]: - script_path_in => "/usr/local/share/munin-plugins", - config => "env.mysqlopts --user=munin --password=${munin_mysql_password} -h localhost", - require => [ Mysql_grant['munin@localhost'], Mysql_user['munin@localhost'], Package['mysql'] ]; - } - - Munin::Plugin::Deploy { - config => "env.mysqlopts --user=munin --password=$munin_mysql_password -h localhost", - require => - [ Mysql_grant['munin@localhost'], - Mysql_user['munin@localhost'], - Package['mysql'] ] - } - munin::plugin::deploy{ - 'mysql_connections': - source => 'mysql/munin/mysql_connections'; - 'mysql_qcache': - source => 'mysql/munin/mysql_qcache'; - 'mysql_qcache_mem': - source => 'mysql/munin/mysql_qcache_mem'; - } + Munin::Plugin::Deploy{ + config => "env.mysqlopts --user=munin --password='${munin_mysql_password}' -h localhost", + require => Mysql_grant['munin@localhost'], + } + munin::plugin::deploy{ + 'mysql_connections': + source => 'mysql/munin/mysql_connections'; + 'mysql_qcache': + source => 'mysql/munin/mysql_qcache'; + 'mysql_qcache_mem': + source => 'mysql/munin/mysql_qcache_mem'; + 'mysql_size_all': + source => 'mysql/munin/mysql_size_all'; + } } diff --git a/manifests/server/nagios.pp b/manifests/server/nagios.pp index 28e52bb..39af429 100644 --- a/manifests/server/nagios.pp +++ b/manifests/server/nagios.pp @@ -1,28 +1,21 @@ -# manifests/server/nagios.pp - class mysql::server::nagios { - case $nagios_mysql_password { - '': { fail("please specify \$nagios_mysql_password to enable nagios mysql check")} - } - # Flip this variable if you need to check MySQL through check_ssh or check_nrpe, # in that case you will have to manually define nagios::service::mysql - if ($nagios_mysql_notcp != true) { + if $mysql::server::nagios_notcp { + $nagios_mysql_user = 'nagios@localhost' + } else { $nagios_mysql_user = 'nagios@%' nagios::service::mysql { 'connection-time': - check_host => $fqdn, + check_host => $::fqdn, require => Mysql_grant[$nagios_mysql_user], } } - else { - $nagios_mysql_user = 'nagios@localhost' - } - + mysql_user{$nagios_mysql_user: - password_hash => mysql_password("${nagios_mysql_password}"), + password_hash => trocla("mysql_nagios_${::fqdn}",'mysql','length: 32'), require => Package['mysql'], } - + # repl_client_priv is needed to check the replication slave status # modes: slave-lag, slave-io-running and slave-sql-running mysql_grant{$nagios_mysql_user: |