diff --git a/manifests/config.pp b/manifests/config.pp index 80ee50d..0a1d319 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -11,7 +11,6 @@ class rsnapshot::config ( $lockpath = pick($rsnapshot::lockpath, $rsnapshot::params::config_lockpath, '/var/run/rsnapshot') $conf_d = pick($rsnapshot::conf_d, $rsnapshot::params::conf_d, '/etc/rsnapshot') $snapshot_root = pick($hosts['snapshot_root'], $rsnapshot::snapshot_root, '/backup') - $default_cron = assert_empty_hash($::rsnapshot::cron) $logpath = pick($rsnapshot::logpath, $rsnapshot::params::config_logpath) # make sure lock path and conf path exist file { $conf_d: @@ -29,7 +28,7 @@ class rsnapshot::config ( file { $logpath: ensure => directory, } - + # 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: @@ -166,57 +165,16 @@ class rsnapshot::config ( concat { $cronfile: } # create cron files for each backup level + # merge possible cron definitions to one + $real_cron = deep_merge($rsnapshot::params::cron, $rsnapshot::cron, $hash[cron]) + $backup_levels.each |String $level| { + $minute = rand_from_array($real_cron[$level][minute], "${host}.${level}.minute") + $hour = rand_from_array($real_cron[$level][hour], "${host}.${level}.hour") + $monthday = rand_from_array($real_cron[$level][monthday], "${host}.${level}.monthday") + $month = rand_from_array($real_cron[$level][month], "${host}.${level}.month") + $weekday = rand_from_array($real_cron[$level][weekday], "${host}.${level}.weekday") - # allow to globally override ranges, create random numbers for backup_levels daily, weekly, monthly - if has_key($hash,cron){ - if has_key($hash[cron], $level) { - $cron = $hash[cron][$level] - } else { - if has_key($default_cron, $level) { - $cron = $default_cron[$level] - } else { - $cron = $rsnapshot::params::cron[$level] - } - } - } else { - if has_key($default_cron, $level) { - $cron = $default_cron[$level] - } else { - $cron = $rsnapshot::params::cron[$level] - } - } - - if has_key($cron, minute) { - $c_min = $cron[minute] - } else { - $c_min = $rsnapshot::params::cron[$level][minute] - } - if has_key($cron, hour) { - $c_hour = $cron[hour] - } else { - $c_hour = $rsnapshot::params::cron[$level][hour] - } - if has_key($cron, monthday) { - $c_monthday = $cron[monthday] - } else { - $c_monthday = $rsnapshot::params::cron[$level][monthday] - } - if has_key($cron, month) { - $c_month = $cron[month] - } else { - $c_month = $rsnapshot::params::cron[$level][month] - } - if has_key($cron, weekday) { - $c_weekday = $cron[weekday] - } else { - $c_weekday = $rsnapshot::params::cron[$level][weekday] - } - $minute = rand_from_array($c_min, "${host}.${level}.minute") - $hour = rand_from_array($c_hour, "${host}.${level}.hour") - $monthday = rand_from_array($c_monthday, "${host}.${level}.monthday") - $month = rand_from_array($c_month, "${host}.${level}.month") - $weekday = rand_from_array($c_weekday, "${host}.${level}.weekday") concat::fragment { "${host}.${level}": target => $cronfile, content => template('rsnapshot/cron.erb'), diff --git a/metadata.json b/metadata.json index 8f0a997..5d6e248 100644 --- a/metadata.json +++ b/metadata.json @@ -1,6 +1,6 @@ { "name": "loomsen-rsnapshot", - "version": "0.4.2", + "version": "0.5.0", "author": "loomsen", "summary": "Configures rsnapshot.", "license": "Apache-2.0",