aboutsummaryrefslogtreecommitdiffstats
path: root/modules/rsnapshot/manifests/init.pp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/rsnapshot/manifests/init.pp')
-rw-r--r--modules/rsnapshot/manifests/init.pp74
1 files changed, 74 insertions, 0 deletions
diff --git a/modules/rsnapshot/manifests/init.pp b/modules/rsnapshot/manifests/init.pp
new file mode 100644
index 00000000..5d145172
--- /dev/null
+++ b/modules/rsnapshot/manifests/init.pp
@@ -0,0 +1,74 @@
+class rsnapshot {
+ class base($confdir = '/data/backups/conf') {
+ package { ['rsnapshot']: }
+
+ file { $confdir:
+ ensure => directory,
+ owner => root,
+ group => root,
+ mode => '0700',
+ }
+
+ @rsnapshot::cron_file { 'hourly': }
+ @rsnapshot::cron_file { 'daily': }
+ @rsnapshot::cron_file { 'weekly': }
+ @rsnapshot::cron_file { 'monthly': }
+ }
+
+ define cron_file($rsnapshot_conf = []) {
+ $filepath = "/tmp/cron.${name}_rsnapshot-backups"
+ $rsnapshot_arg = $name
+ file { $filepath:
+ ensure => present,
+ content => template('rsnapshot/cron_file'),
+ owner => root,
+ group => root,
+ mode => '0755',
+ }
+ }
+
+ # - 'backup' is an array of "source destination" to backup
+ # - 'backup_script' is an array of "script destination"
+ # - ${x}_interval is the number of hourly, daily, weekly, monthly
+ # backups that should be kept. If you don't want hourly, daily,
+ # weekly or monthly backups, set ${x}_interval to '0'
+ define backup(
+ $snapshot_root = '/data/backups',
+ $one_fs = '1',
+ $backup = [],
+ $backup_script = [],
+ $hourly_interval = '0',
+ $daily_interval = '6',
+ $weekly_interval = '4',
+ $monthly_interval = '3'
+ ) {
+ $conffile = "${rsnapshot::base::confdir}/${name}.conf"
+ file { $conffile:
+ owner => root,
+ group => root,
+ mode => '0700',
+ content => template('rsnapshot/rsnapshot.conf'),
+ }
+
+ if ($hourly_interval != '0') {
+ Rsnapshot::Cron_file <| title == 'hourly' |> {
+ rsnapshot_conf +> $conffile,
+ }
+ }
+ if ($daily_interval != '0') {
+ Rsnapshot::Cron_file <| title == 'daily' |> {
+ rsnapshot_conf +> $conffile,
+ }
+ }
+ if ($weekly_interval != '0') {
+ Rsnapshot::Cron_file <| title == 'weekly' |> {
+ rsnapshot_conf +> $conffile,
+ }
+ }
+ if ($monthly_interval != '0') {
+ Rsnapshot::Cron_file <| title == 'monthly' |> {
+ rsnapshot_conf +> $conffile,
+ }
+ }
+ }
+}