summaryrefslogtreecommitdiff
path: root/manifests/server
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/server')
-rw-r--r--manifests/server/account_security.pp8
-rw-r--r--manifests/server/base.pp161
-rw-r--r--manifests/server/clientpackage.pp4
-rw-r--r--manifests/server/cron/backup.pp37
-rw-r--r--manifests/server/munin/base.pp20
-rw-r--r--manifests/server/munin/debian.pp45
-rw-r--r--manifests/server/munin/default.pp73
-rw-r--r--manifests/server/nagios.pp21
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: