aboutsummaryrefslogtreecommitdiff
path: root/manifests/duplicity.pp
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/duplicity.pp')
-rw-r--r--manifests/duplicity.pp48
1 files changed, 48 insertions, 0 deletions
diff --git a/manifests/duplicity.pp b/manifests/duplicity.pp
new file mode 100644
index 0000000..115efb1
--- /dev/null
+++ b/manifests/duplicity.pp
@@ -0,0 +1,48 @@
+# local backups using duplicity
+define backup::duplicity(
+ $encryptkey = false,
+ $password = false,
+ $order = 50,
+ $ensure = present,
+ $full_if_older_than = "1M",
+ $remove_older_than = "45D",
+ $remove_all_but_n_full = "1",
+ $periodic_check = absent,
+ $directory = "${backup::params::backupdir}/duplicity"
+) {
+
+ case $encryptkey { false: { err("need to define a key!") } }
+ case $password { false: { err("need to define password!") } }
+
+ $exclude_unencrypted = $backup::params::backup_exclude_unencrypted
+ $include_unencrypted = $backup::params::backup_include_unencrypted
+
+ include backupninja::client
+
+ # backup dest folder
+ file { "${backup::params::backupdir}/duplicity":
+ ensure => directory,
+ owner => "root",
+ group => "root",
+ }
+
+ # the backupninja rule for this duplicity backup
+ file { "${backupninja::client::defaults::configdir}/${order}_duplicity-${title}.sh":
+ ensure => $ensure,
+ content => template('backup/dup.conf.erb'),
+ owner => root,
+ group => root,
+ mode => 0600,
+ require => File["${backupninja::client::defaults::configdir}"],
+ }
+
+ # check duplicity backups once a week
+ cron { "duplicity_check-$title.$domain":
+ command => "/bin/bash ${backupninja::client::defaults::configdir}/${order}_duplicity-${title}.sh --check",
+ user => root,
+ hour => "0",
+ minute => "0",
+ weekday => "0",
+ ensure => $periodic_check,
+ }
+}