Add new mysql_backup module.

The puppetlabs mysql modules has a backup class which seems to be too
smart for its own good. Create a simple module with a backup define that
allows us to backup specific databases independently.

Change-Id: If8a68b254ab1df61a1c9f99f8484a6ebd2e66944
This commit is contained in:
Clark Boylan 2013-08-13 14:05:46 -07:00
commit c267aaa7e8
1 changed files with 48 additions and 0 deletions

48
manifests/backup.pp Normal file
View File

@ -0,0 +1,48 @@
# == Define: mysql_backup::backup
#
# Arguments determine when backups should be taken, where they should
# be located, and how often they shouled be rotated. The namevar
# of the define must be the name of the database to backup.
# This define assumes that the mysqldump command is installed under
# /usr/bin.
#
define mysql_backup::backup (
$minute = '0',
$hour = '0',
$day = '*',
$dest_dir = '/var/backups/mysql_backups',
$rotation = 'daily',
$num_backups = '30',
$defaults_file = '/etc/mysql/debian.cnf'
) {
# Wrap in check as there may be mutliple backup defines backing
# up to the same dir.
if ! defined(File[$dest_dir]) {
file { $dest_dir:
ensure => directory,
mode => '0755',
owner => 'root',
group => 'root',
}
}
cron { "${name}-backup":
ensure => present,
command => "/usr/bin/mysqldump --defaults-file=${defaults_file} --opt --all-databases | gzip -9 > ${dest_dir}/${name}.sql.gz",
minute => $minute,
hour => $hour,
weekday => $day,
require => File[$dest_dir],
}
include logrotate
logrotate::file { "${name}-rotate":
log => "${dest_dir}/${name}.sql.gz",
options => [
'nocompress',
"rotate ${num_backups}",
$rotation,
],
require => Cron["${name}-backup"],
}
}