Initial commit
This commit is contained in:
parent
f1582f8953
commit
6733f1a951
|
@ -0,0 +1,233 @@
|
|||
#wmdeit_backup
|
||||
|
||||
|
||||
|
||||
class wmdeit_backup(
|
||||
$backup_dir = "/srv/backup",
|
||||
$backup_key_file = "/root/.ssh/backup_key",
|
||||
$backup_key,
|
||||
$mnt_server = undef
|
||||
|
||||
) {
|
||||
|
||||
|
||||
|
||||
|
||||
file {$backup_dir:
|
||||
ensure => directory
|
||||
} ->
|
||||
file {"$backup_dir/mnt":
|
||||
ensure => directory
|
||||
} ->
|
||||
file {"$backup_dir/backup.sh":
|
||||
ensure => absent,
|
||||
content => "#!/bin/bash\n/usr/bin/rsnapshot -c $backup_dir/\$1 daily && we=\$(LC_TIME=C date +%A) && if [ \$we = \"Friday\" ]; then /usr/bin/rsnapshot -c $backup_dir/\$1 weekly; fi",
|
||||
mode => '755',
|
||||
}
|
||||
|
||||
if $mnt_server {
|
||||
mount {"$backup_dir/mnt":
|
||||
device => "sshfs#$mnt_server",
|
||||
fstype => "fuse",
|
||||
ensure => mounted,
|
||||
require => File["$backup_dir/mnt"],
|
||||
options => defaults,
|
||||
remounts => false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
package { ["rsnapshot","sshfs"]:
|
||||
ensure => installed,
|
||||
}
|
||||
|
||||
file { "/root/.ssh":
|
||||
ensure => directory,
|
||||
mode => "600",
|
||||
} ->
|
||||
file {"$backup_key_file":
|
||||
ensure => file,
|
||||
content => $backup_key,
|
||||
mode => "600",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
define wmdeit_backup::scpbackup (
|
||||
$weekday = 0
|
||||
|
||||
) {
|
||||
$dir = $title
|
||||
|
||||
$bname = $title
|
||||
$backup_key_file = $wmdeit_backup::backup_key_file
|
||||
$backup_pub_key_file = "/tmp/backup_pub.pem"
|
||||
$privkey = "/root/${title}_privkey"
|
||||
$backup_dir = $wmdeit_backup::backup_dir
|
||||
$shellscript = "$backup_dir/backup-scp-$title.sh"
|
||||
|
||||
$tdir = "$backup_dir/$dir/daily.0"
|
||||
|
||||
|
||||
file {"$shellscript":
|
||||
mode => "700",
|
||||
ensure => file,
|
||||
content => "#!/bin/sh
|
||||
#Get current week of year modulo 2, so we can name our backups alternating backup1 and backup02
|
||||
G=\$((`/bin/date +%V` % 2))
|
||||
# create key
|
||||
/usr/bin/openssl rand -hex 64 -out $privkey
|
||||
# create encrypted backup
|
||||
/usr/bin/openssl rsautl -encrypt -inkey $backup_pub_key_file -pubin -in $privkey -out $backup_dir/mnt/backup-$bname-0\$G-privkey.enc
|
||||
cd $tdir
|
||||
tar c ./ | xz -3 | openssl enc -aes-256-cbc -salt -pass file:$privkey > $backup_dir/mnt/backup-$bname-0\$G-tar.xz.enc
|
||||
# upload backup to server
|
||||
#scp $backup_dir/mnt/backup-$bname\$G-privkey.enc $server:backup-$bname\$G-privkey.enc
|
||||
#rsync $backup_dir/mnt/backup-$bname\$G-tar.xz.enc $server:backup-$bname\$G-tar.xz.enc
|
||||
rm $privkey
|
||||
"
|
||||
}
|
||||
#
|
||||
#
|
||||
# exec {"/usr/bin/openssl rsa -in $backup_key_file -pubout -out $backup_pub_key_file":
|
||||
# creates => $backup_pub_key_file
|
||||
# }
|
||||
#
|
||||
|
||||
cron {"scpbackup-$title":
|
||||
weekday => $weekday,
|
||||
hour => 23,
|
||||
minute => 0,
|
||||
command => "$shellscript"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class wmdeit_backup::mysqldump_all (
|
||||
$hour = 20, # Start SQL-Dump by default after Tagesschau
|
||||
$minute = 15
|
||||
){
|
||||
|
||||
$mysql = '/usr/bin/mysql'
|
||||
$mysqldump = '/usr/bin/mysqldump'
|
||||
|
||||
cron {'mysqldump':
|
||||
ensure => present,
|
||||
user => root,
|
||||
command => "$mysql -N -e 'show databases' | while read dbname; do $mysqldump --complete-insert --routines --triggers --single-transaction --max_allowed_packet=512M \"\$dbname\" > /var/backups/\"\$dbname\".sql; done",
|
||||
|
||||
hour => $hour,
|
||||
minute => $minute,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
define wmdeit_backup::backup(
|
||||
|
||||
$ssh_port = 22,
|
||||
$server=$title,
|
||||
$dirs = ["/"],
|
||||
$local_dir = "./",
|
||||
$retain_daily = 30,
|
||||
$retain_weekly = 24,
|
||||
$retain_monthly = 0,
|
||||
$daily_hour = 3,
|
||||
$daily_minute = 0,
|
||||
|
||||
) {
|
||||
$bname = $title
|
||||
$backup_dir = $wmdeit_backup::backup_dir
|
||||
$backup_key_file = $wmdeit_backup::backup_key_file
|
||||
|
||||
if $daily_hour > 23 {
|
||||
$idaily_hour = $daily_hour - 23
|
||||
}
|
||||
else {
|
||||
$idaily_hour = $daily_hour
|
||||
}
|
||||
|
||||
|
||||
if $idaily_hour-1 < 0 {
|
||||
$weekly_hour = $idaily_hout+23
|
||||
}
|
||||
else {
|
||||
$weekly_hour = $idaily_hour-1
|
||||
}
|
||||
$weekly_minute = $daily_minute
|
||||
|
||||
cron {"daily_backup$title":
|
||||
ensure => present,
|
||||
hour => $idaily_hour,
|
||||
minute => $daily_minute,
|
||||
command => "/usr/bin/rsnapshot -c $backup_dir/$bname.conf daily",
|
||||
user => 'root'
|
||||
}
|
||||
|
||||
if $retain_weekly != 0 {
|
||||
$retain_weekly_string = "retain\tweekly\t$retain_weekly"
|
||||
$weekly_cron = present
|
||||
}
|
||||
else {
|
||||
$weekly_cron = absent
|
||||
}
|
||||
|
||||
cron {"weekly_backup$title":
|
||||
ensure => present,
|
||||
hour => $weekly_hour,
|
||||
minute => $weekly_minute,
|
||||
weekday => 0,
|
||||
command => "/usr/bin/rsnapshot -c $backup_dir/$bname.conf weekly",
|
||||
user => 'root'
|
||||
}
|
||||
|
||||
if $retain_monthly != 0 {
|
||||
$retain_monthly_string = "retain\tmonthly\t$retain_monthly"
|
||||
$monthly_cron = present
|
||||
}
|
||||
else {
|
||||
$monthly_cron = absent
|
||||
}
|
||||
|
||||
cron {"monthly_backup$title":
|
||||
ensure => $monthly_cron,
|
||||
monthday => 1,
|
||||
hour => 1,
|
||||
minute => 0,
|
||||
command => "/usr/bin/rsnapshot -c $backup_dir/$bname.conf monthly",
|
||||
user => 'root'
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$bdirs = join ($dirs.map | String $dir| {
|
||||
"backup root@$server:$dir\t$local_dir\n"
|
||||
},"")
|
||||
|
||||
file {"$backup_dir/$bname.conf":
|
||||
ensure => file,
|
||||
content => "config_version 1.2
|
||||
snapshot_root $backup_dir/$bname
|
||||
cmd_cp /bin/cp
|
||||
cmd_rm /bin/rm
|
||||
cmd_rsync /usr/bin/rsync
|
||||
cmd_ssh /usr/bin/ssh
|
||||
cmd_logger /usr/bin/logger
|
||||
retain daily $retain_daily
|
||||
$retain_weekly_string
|
||||
$retain_monthly_string
|
||||
|
||||
verbose 2
|
||||
loglevel 3
|
||||
lockfile /var/run/rsnapshot-$bname.pid
|
||||
ssh_args -p $ssh_port -i $backup_key_file
|
||||
rsync_long_args --delete --numeric-ids --relative --delete-excluded
|
||||
|
||||
$bdirs
|
||||
|
||||
"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue