diff options
Diffstat (limited to 'manifests')
-rw-r--r-- | manifests/admin_user.pp | 17 | ||||
-rw-r--r-- | manifests/client.pp | 6 | ||||
-rw-r--r-- | manifests/default_database.pp | 11 | ||||
-rw-r--r-- | manifests/devel.pp | 2 | ||||
-rw-r--r-- | manifests/server.pp | 16 | ||||
-rw-r--r-- | manifests/server/account_security.pp | 8 | ||||
-rw-r--r-- | manifests/server/base.pp | 42 | ||||
-rw-r--r-- | manifests/server/cron/backup.pp | 13 | ||||
-rw-r--r-- | manifests/server/munin/default.pp | 9 | ||||
-rw-r--r-- | manifests/server/nagios.pp | 16 |
10 files changed, 75 insertions, 65 deletions
diff --git a/manifests/admin_user.pp b/manifests/admin_user.pp new file mode 100644 index 0000000..52d01fc --- /dev/null +++ b/manifests/admin_user.pp @@ -0,0 +1,17 @@ +define mysql::admin_user( + $ensure = present, + $host = '127.0.0.1', + $password +){ + mysql_user{"${name}@${host}": + ensure => $ensure, + password_hash => $password ? { + 'trocla' => trocla("mysql_admin-user_${name}",'mysql'), + default => $password, + }, + } + mysql_grant{"${name}@${host}": + privileges => 'all', + require => Mysql_user["${name}@${host}"], + } +} diff --git a/manifests/client.pp b/manifests/client.pp index f375a51..8d2280f 100644 --- a/manifests/client.pp +++ b/manifests/client.pp @@ -1,12 +1,12 @@ class mysql::client { - case $operatingsystem { + case $::operatingsystem { debian: { include mysql::client::debian } default: { include mysql::client::base } } - if $use_shorewall { + if hiera('use_shorewall',false) { include shorewall::rules::out::mysql } - + } diff --git a/manifests/default_database.pp b/manifests/default_database.pp index 34b986f..7465eaf 100644 --- a/manifests/default_database.pp +++ b/manifests/default_database.pp @@ -1,6 +1,4 @@ # create default database -# generate hashed password with: -# ruby -r'digest/sha1' -e 'puts "*" + Digest::SHA1.hexdigest(Digest::SHA1.digest(ARGV[0])).upcase' PASSWORD define mysql::default_database( $username = 'absent', $password = 'absent', @@ -32,9 +30,12 @@ define mysql::default_database( ] if $ensure == 'present' { Mysql_user["${real_username}@${host}"]{ - password_hash => $password_is_encrypted ? { - true => "$password", - default => mysql_password("$password") + password_hash => $password ? { + 'trocla' => trocla("mysql_${real_username}",'mysql'), + default => $password_is_encrypted ? { + true => "$password", + default => mysql_password("$password") + }, }, } } diff --git a/manifests/devel.pp b/manifests/devel.pp index 213aa7c..9c2d9bc 100644 --- a/manifests/devel.pp +++ b/manifests/devel.pp @@ -1,5 +1,5 @@ class mysql::devel{ - package{'mysql-devel': + package{"mysql-devel.${architecture}": ensure => present, } } diff --git a/manifests/server.pp b/manifests/server.pp index e6e5fac..964d7cb 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -1,27 +1,27 @@ class mysql::server { - case $operatingsystem { + case $::operatingsystem { gentoo: { include mysql::server::gentoo } centos: { include mysql::server::centos } debian: { include mysql::server::debian } default: { include mysql::server::base } } - - if $use_munin { - case $operatingsystem { + + if hiera('use_munin',false) { + case $::operatingsystem { debian: { include mysql::server::munin::debian } default: { include mysql::server::munin::default } } } - if $use_nagios { - case $nagios_check_mysql { - false: { info("We don't do nagioschecks for mysql on ${fqdn}" ) } + if hiera('use_nagios',false) { + case hiera('nagios_check_mysql',false) { + false: { info("We don't do nagioschecks for mysql on ${::fqdn}" ) } default: { include mysql::server::nagios } } } - if $use_shorewall { + if hiera('use_shorewall',false) { include shorewall::rules::mysql } } diff --git a/manifests/server/account_security.pp b/manifests/server/account_security.pp new file mode 100644 index 0000000..23d1cb7 --- /dev/null +++ b/manifests/server/account_security.pp @@ -0,0 +1,8 @@ +class mysql::server::account_security { + # some installations have some default users which are not required. + # We remove them here. You can subclass this class to overwrite this behavior. + mysql_user{ [ "root@${fqdn}", "root@127.0.0.1", "@${fqdn}", "@localhost", "@%" ]: + ensure => 'absent', + require => Service['mysql'], + } +} diff --git a/manifests/server/base.pp b/manifests/server/base.pp index 5031876..eb66b43 100644 --- a/manifests/server/base.pp +++ b/manifests/server/base.pp @@ -5,12 +5,12 @@ class mysql::server::base { 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/${::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.${::operatingsystem}.{lsbdistcodename}", + "puppet:///modules/mysql/config/my.cnf.${::operatingsystem}", "puppet:///modules/mysql/config/my.cnf" ], ensure => file, @@ -18,7 +18,7 @@ class mysql::server::base { notify => Service['mysql'], owner => root, group => 0, mode => 0644; } - + file { 'mysql_data_dir': path => '/var/lib/mysql/data', ensure => directory, @@ -35,17 +35,13 @@ class mysql::server::base { owner => mysql, group => mysql, mode => 0660; } - 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", + 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'), @@ -53,22 +49,22 @@ class mysql::server::base { owner => root, group => 0, mode => 0400, notify => Exec['mysql_set_rootpw'], } - + exec { 'mysql_set_rootpw': command => '/usr/local/sbin/setmysqlpass.sh', unless => "mysqladmin -uroot status > /dev/null", require => [ File['mysql_setmysqlpass.sh'], Package['mysql-server'] ], refreshonly => true, } - - if ($mysql_backup_cron) { + + if hiera('mysql_backup_cron',false) { include mysql::server::cron::backup } - - if ($mysql_optimize_cron) { + + if hiera('mysql_optimize_cron',false) { include mysql::server::cron::optimize } - + service { 'mysql': ensure => running, enable => true, @@ -76,8 +72,10 @@ class mysql::server::base { require => Package['mysql-server'], } + 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/cron/backup.pp b/manifests/server/cron/backup.pp index 9fbfaa0..570e4c8 100644 --- a/manifests/server/cron/backup.pp +++ b/manifests/server/cron/backup.pp @@ -1,15 +1,10 @@ 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)") } + $mysql_backup_dir = hiera('mysql_backup_dir','/var/backups/mysql') + case hiera('mysql_manage_backup_dir',true) { + false: { info("We don't manage the mysql_backup_dir") } default: { file { 'mysql_backup_dir': - path => $real_mysql_backup_dir, + path => hiera('mysql_backup_dir','/var/backups/mysql'), ensure => directory, before => Cron['mysql_backup_cron'], owner => root, group => 0, mode => 0700; diff --git a/manifests/server/munin/default.pp b/manifests/server/munin/default.pp index 424f8b2..ad43dc3 100644 --- a/manifests/server/munin/default.pp +++ b/manifests/server/munin/default.pp @@ -1,12 +1,8 @@ # manifests/server/munin/default.pp class mysql::server::munin::default { - case $munin_mysql_password { - '': { fail("please specify \$munin_mysql_password to enable mysql munin plugin")} - } - mysql_user{'munin@localhost': - password_hash => mysql_password("$munin_mysql_password"), + password_hash => trocla("mysql_munin_${::fqdn}",'mysql','length: 32'), require => Package['mysql'], } @@ -15,6 +11,7 @@ class mysql::server::munin::default { require => [ Mysql_user['munin@localhost'], Package['mysql'] ], } + $munin_mysql_password = trocla("mysql_munin_${::fqdn}",'plain', 'length: 32') munin::plugin { [mysql_bytes, mysql_queries, mysql_slowqueries, mysql_threads]: config => "env.mysqlopts --user=munin --password=${munin_mysql_password} -h localhost", @@ -22,7 +19,7 @@ class mysql::server::munin::default { } Munin::Plugin::Deploy{ - config => "env.mysqlopts --user=munin --password=$munin_mysql_password -h localhost", + config => "env.mysqlopts --user=munin --password=${munin_mysql_password} -h localhost", require => [ Mysql_grant['munin@localhost'], Mysql_user['munin@localhost'], diff --git a/manifests/server/nagios.pp b/manifests/server/nagios.pp index 4e2b8b8..18eef8a 100644 --- a/manifests/server/nagios.pp +++ b/manifests/server/nagios.pp @@ -1,28 +1,22 @@ -# 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 (hiera('nagios_mysql_notcp',false) != true) { $nagios_mysql_user = 'nagios@%' nagios::service::mysql { 'connection-time': - check_hostname => $fqdn, + check_hostname => $::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: |