2015-12-19 10:16:05 +00:00
# = = Class : rsnapshot: : config
#
# manage host configs
class rsnapshot: : config (
2015-12-19 21:49:34 +00:00
$ hosts = $ rsnapshot: : hosts,
2015-12-19 10:16:05 +00:00
) {
# these are global settings, no point in setting them per host
$c onfig_version = $ rsnapshot: : params: : config_version
$ lockpath = pick( $ rsnapshot: : lockpath, $ rsnapshot: : params: : config_lockpath)
$c onf_d = pick( $ rsnapshot: : conf_d, $ rsnapshot: : params: : conf_d)
# make sure lock path and conf path exist
file { $c onf_d:
ensure = > 'directory' ,
}
file { $ lockpath:
ensure = > 'directory' ,
}
2015-12-19 17:32:24 +00:00
2015-12-19 20:39:36 +00:00
# custom function , if only a hostname is given as a param, this is an empty hash
# the next loop would break as puppet does not allow to reassign variables
# the function checks $ hosts for elements like:
# { foo => } and converts those to { foo => {} }
2015-12-19 20:13:55 +00:00
$ hosts_clean = assert_empty_hash( $ hosts)
$ hosts_clean. each | String $ host, Hash $ hash | {
2015-12-19 10:16:05 +00:00
$ snapshot_root = pick( $ hash[ 'snapshot_root' ] , $ rsnapshot: : params: : config_snapshot_root)
$bac kup_user = pick( $ hash[ 'backup_user' ] , $ rsnapshot: : params: : config_backup_user)
2015-12-19 21:49:34 +00:00
$defa ult_backup_dirs = pick( $ rsnapshot: : default_backup, $ rsnapshot: : params: : config_default_backup)
$bac kup = $ hash[ 'backup' ]
2015-12-19 17:32:24 +00:00
$bac kup_defaults = pick( $ hash[ 'backup_defaults' ] , $ rsnapshot: : params: : config_backup_defaults)
2015-12-19 10:16:05 +00:00
$c md_cp = pick( $ hash[ 'cmd_cp' ] , $ rsnapshot: : params: : config_cmd_cp)
$c md_rm = pick( $ hash[ 'cmd_rm' ] , $ rsnapshot: : params: : config_cmd_rm)
$c md_rsync = pick( $ hash[ 'cmd_rsync' ] , $ rsnapshot: : params: : config_cmd_rsync)
$c md_ssh = pick( $ hash[ 'cmd_ssh' ] , $ rsnapshot: : params: : config_cmd_ssh)
$c md_logger = pick( $ hash[ 'cmd_logger' ] , $ rsnapshot: : params: : config_cmd_logger)
$c md_du = pick( $ hash[ 'cmd_du' ] , $ rsnapshot: : params: : config_cmd_du)
$c md_rsnapshot_diff = pick_undef( $ hash[ 'cmd_rsnapshot_diff' ] , $ rsnapshot: : params: : config_cmd_rsnapshot_diff)
$c md_preexec = pick_undef( $ hash[ 'cmd_preexec' ] , $ rsnapshot: : params: : config_cmd_preexec)
$c md_postexec = pick_undef( $ hash[ 'cmd_postexec' ] , $ rsnapshot: : params: : config_cmd_postexec)
$ use_lvm = pick_undef( $ hash[ 'use_lvm' ] , $ rsnapshot: : params: : config_use_lvm)
$ linux_lvm_cmd_lvcreate = pick_undef( $ hash[ 'linux_lvm_cmd_lvcreate' ] , $ rsnapshot: : params: : config_linux_lvm_cmd_lvcreate)
$ linux_lvm_cmd_lvremove = pick_undef( $ hash[ 'linux_lvm_cmd_lvremove' ] , $ rsnapshot: : params: : config_linux_lvm_cmd_lvremove)
$ linux_lvm_cmd_mount = pick_undef( $ hash[ 'linux_lvm_cmd_mount' ] , $ rsnapshot: : params: : config_linux_lvm_cmd_mount)
$ linux_lvm_cmd_umount = pick_undef( $ hash[ 'linux_lvm_cmd_umount' ] , $ rsnapshot: : params: : config_linux_lvm_cmd_umount)
$ linux_lvm_snapshotsize = pick_undef( $ hash[ 'linux_lvm_snapshotsize' ] , $ rsnapshot: : params: : config_linux_lvm_snapshotsize)
$ linux_lvm_snapshotname = pick_undef( $ hash[ 'linux_lvm_snapshotname' ] , $ rsnapshot: : params: : config_linux_lvm_snapshotname)
$ linux_lvm_vgpath = pick_undef( $ hash[ 'linux_lvm_vgpath' ] , $ rsnapshot: : params: : config_linux_lvm_vgpath)
$ linux_lvm_mountpath = pick_undef( $ hash[ 'linux_lvm_mountpath' ] , $ rsnapshot: : params: : config_linux_lvm_mountpath)
$ no_create_root = pick_undef( $ hash[ 'no_create_root' ] , $ rsnapshot: : params: : config_no_create_root)
$ logpath = pick( $ hash[ 'logpath' ] , $ rsnapshot: : logpath, $ rsnapshot: : params: : config_logpath)
$ verbose = pick( $ hash[ 'verbose' ] , $ rsnapshot: : params: : config_verbose)
$ loglevel = pick( $ hash[ 'loglevel' ] , $ rsnapshot: : params: : config_loglevel)
$ stop_on_stale_lockfile = pick_undef( $ hash[ 'stop_on_stale_lockfile' ] , $ rsnapshot: : params: : config_stop_on_stale_lockfile)
$ rsync_short_args = pick( $ hash[ 'rsync_short_args' ] , $ rsnapshot: : params: : config_rsync_short_args)
$ rsync_long_args = pick_undef( $ hash[ 'rsync_long_args' ] , $ rsnapshot: : params: : config_rsync_long_args)
$ ssh_args = pick_undef( $ hash[ 'ssh_args' ] , $ rsnapshot: : params: : config_ssh_args)
$d u_args = pick_undef( $ hash[ 'du_args' ] , $ rsnapshot: : params: : config_du_args)
$ one_fs = pick_undef( $ hash[ 'one_fs' ] , $ rsnapshot: : params: : config_one_fs)
$ interval = pick( $ hash[ 'interval' ] , $ rsnapshot: : params: : config_interval)
$ retain = pick_undef( $ hash[ 'retain' ] , $ rsnapshot: : params: : config_retain)
$ include = pick_undef( $ hash[ 'include' ] , $ rsnapshot: : params: : config_include)
$exc lude = pick_undef( $ hash[ 'exclude' ] , $ rsnapshot: : params: : config_exclude)
$ include_file = pick_undef( $ hash[ 'include_file' ] , $ rsnapshot: : params: : config_include_file)
$exc lude_file = pick( $ hash[ 'exclude_file' ] , $ rsnapshot: : params: : config_exclude_file, "${conf_d}/${host}.exclude" )
$ link_dest = pick_undef( $ hash[ 'link_dest' ] , $ rsnapshot: : params: : config_link_dest)
$ sync_first = pick_undef( $ hash[ 'sync_first' ] , $ rsnapshot: : params: : config_sync_first)
$ use_lazy_deletes = pick_undef( $ hash[ 'use_lazy_deletes' ] , $ rsnapshot: : params: : config_use_lazy_deletes)
2015-12-19 20:39:36 +00:00
$ rsync_numtries = pick_undef( $ hash[ 'rsync_numtries' ] , $ rsnapshot: : params: : config_rsync_numtries)
2015-12-19 10:16:05 +00:00
$bac kup_scripts = pick_undef( $ hash[ 'backup_scripts' ] , $ rsnapshot: : params: : config_backup_scripts)
$ snapshot_dir = "${config_snapshot_root}/${host}"
$c onfig = "${conf_d}/${host}.rsnapshot.conf"
2015-12-19 20:39:36 +00:00
$ lockfile = "${lockpath}/${host}.pid"
$ logfile = "${logpath}/${host}.log"
2015-12-19 10:16:05 +00:00
2015-12-19 21:49:34 +00:00
# fail if $bac kup_defaults is set to false and no $ host[ backup] defined
if ! $bac kup_defaults and ! $bac kup {
fail( "There is no point in not specifying a backup, I got backup_defaults: ${backup_defaults} and backup definitions for this host (${host}) don't exist" )
}
2015-12-19 20:39:36 +00:00
# merge the backup hashes to one if backup_default is set ( defaults to true )
if $bac kup_defaults {
2015-12-19 21:49:34 +00:00
$bac kups = merge( $bac kup, $defa ult_backup_dirs)
2015-12-19 20:39:36 +00:00
} else {
$bac kups = $bac kup
}
# one of both interval or retain must be present
if ! ( $ interval and $ retain ) {
$ interval = pick( $ hash[ 'interval' ] , $ rsnapshot: : params: : config_interval)
}
# rsnapshot wants numeric values
if $ link_dest {
$ link_dest_num = bool2num( $ link_dest)
}
if $ sync_first {
$ sync_first_num = bool2num( $ sync_first)
}
if $ use_lazy_deletes {
$ use_lazy_deletes_num = bool2num( $ use_lazy_deletes)
}
file { $exc lude_file:
ensure = > file ,
}
2015-12-19 10:16:05 +00:00
file { $c onfig:
content = > template( 'rsnapshot/rsnapshot.erb' )
}
}
}