From 9ec0ef766c210ac6ca26a725701a89031a56fbab Mon Sep 17 00:00:00 2001 From: Jerome Charaoui Date: Thu, 10 Dec 2009 14:52:50 -0500 Subject: make backup and optimize cron jobs optional; introduce $mysql_backup_cron, $mysql_backup_dir and$mysql_optimize_cron; use a module_dir for scripts --- manifests/server/base.pp | 45 +++++++++++++++++---------------------- manifests/server/clientpackage.pp | 3 --- manifests/server/cron.pp | 2 ++ manifests/server/cron/backup.pp | 22 +++++++++++++++++++ manifests/server/cron/optimize.pp | 18 ++++++++++++++++ 5 files changed, 61 insertions(+), 29 deletions(-) create mode 100644 manifests/server/cron.pp create mode 100644 manifests/server/cron/backup.pp create mode 100644 manifests/server/cron/optimize.pp (limited to 'manifests/server') diff --git a/manifests/server/base.pp b/manifests/server/base.pp index 3f1b75b..480eda9 100644 --- a/manifests/server/base.pp +++ b/manifests/server/base.pp @@ -37,8 +37,8 @@ class mysql::server::base { } file { 'mysql_setmysqlpass.sh': - path => '/usr/local/sbin/setmysqlpass.sh', - source => "puppet://$server/modules/mysql/config/${operatingsystem}/setmysqlpass.sh", + path => "${mysql_moduledir}/server/setmysqlpass.sh", + source => "puppet://${server}/modules/mysql/scripts/${operatingsystem}/setmysqlpass.sh", require => Package['mysql-server'], owner => root, group => 0, mode => 0500; } @@ -52,36 +52,29 @@ class mysql::server::base { } exec { 'mysql_set_rootpw': - command => "/usr/local/sbin/setmysqlpass.sh $mysql_rootpw", + command => "${mysql_moduledir}/server/setmysqlpass.sh ${mysql_rootpw}", unless => "mysqladmin -uroot status > /dev/null", require => [ File['mysql_setmysqlpass.sh'], Package['mysql-server'] ], refreshonly => true, } - file { 'mysql_backup_cron': - path => '/etc/cron.d/mysql_backup.cron', - source => [ "puppet://$server/modules/mysql/backup/mysql_backup.cron.${operatingsystem}", - "puppet://$server/modules/mysql/backup/mysql_backup.cron" ], - require => [ Exec['mysql_set_rootpw'], File['mysql_root_cnf'] ], - owner => root, group => 0, mode => 0600; - } - - file { 'mysql_optimize_cron': - path => '/etc/cron.weekly/mysql_optimize_tables.rb', - source => "puppet://$server/modules/mysql/optimize/optimize_tables.rb", - require => [ Exec['mysql_set_rootpw'], File['mysql_root_cnf'] ], - owner => root, group => 0, mode => 0700; - } + 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-client'], + service { 'mysql': + ensure => running, + enable => true, + hasstatus => true, + require => Package['mysql-client'], } - # Collect all databases and users - Mysql_database<<| tag == "mysql_${fqdn}" |>> - Mysql_user<<| tag == "mysql_${fqdn}" |>> - Mysql_grant<<| tag == "mysql_${fqdn}" |>> + # Collect all databases and users + 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 038f7c9..8f317c1 100644 --- a/manifests/server/clientpackage.pp +++ b/manifests/server/clientpackage.pp @@ -9,7 +9,4 @@ class mysql::server::clientpackage inherits mysql::server::base { Exec['mysql_set_rootpw']{ require +> Package['mysql-client'], } - File['mysql_backup_cron']{ - require +> Package['mysql-client'], - } } diff --git a/manifests/server/cron.pp b/manifests/server/cron.pp new file mode 100644 index 0000000..36a7a1f --- /dev/null +++ b/manifests/server/cron.pp @@ -0,0 +1,2 @@ +class mysql::server::cron { +} diff --git a/manifests/server/cron/backup.pp b/manifests/server/cron/backup.pp new file mode 100644 index 0000000..33b8f0f --- /dev/null +++ b/manifests/server/cron/backup.pp @@ -0,0 +1,22 @@ +class mysql::server::cron::backup { + + $real_mysql_backup_dir = $mysql_backup_dir ? { + '' => '/var/backups/mysql', + default => $mysql_backup_dir, + } + + file { 'mysql_backup_dir': + path => $real_mysql_backup_dir, + source => "puppet://${server}/modules/common/empty", + ensure => directory, + 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'], File['mysql_backup_dir'] ], + } +} diff --git a/manifests/server/cron/optimize.pp b/manifests/server/cron/optimize.pp new file mode 100644 index 0000000..29ee66e --- /dev/null +++ b/manifests/server/cron/optimize.pp @@ -0,0 +1,18 @@ +class mysql::server::cron::optimize { + + file { 'mysql_optimize_script': + path => "${mysql_moduledir}/server/optimize_tables.rb", + source => "puppet://${server}/modules/mysql/scripts/optimize_tables.rb", + owner => root, group => 0, mode => 0700; + } + + cron { 'mysql_optimize_cron': + command => "${mysql_moduledir}/server/optimize_tables.rb", + user => 'root', + minute => 40, + hour => 6, + weekday => 7, + require => [ Exec['mysql_set_rootpw'], File['mysql_root_cnf'], File['mysql_optimize_script'] ], + } + +} -- cgit v1.2.3