]> gitweb.fluxo.info Git - puppet-backupninja.git/commitdiff
adding duplicity handler.
authordrebs <drebs@riseup.net>
Mon, 13 Jul 2009 05:36:34 +0000 (02:36 -0300)
committerdrebs <drebs@riseup.net>
Mon, 13 Jul 2009 05:36:34 +0000 (02:36 -0300)
manifests/dup.pp [new file with mode: 0644]
templates/dup.conf.erb

diff --git a/manifests/dup.pp b/manifests/dup.pp
new file mode 100644 (file)
index 0000000..11fca07
--- /dev/null
@@ -0,0 +1,116 @@
+# Run duplicity-backup as part of a backupninja run.
+#
+# Valid attributes for this type are:
+#
+#   order:
+#
+#      The prefix to give to the handler config filename, to set order in
+#      which the actions are executed during the backup run.
+#
+#   ensure:
+#
+#      Allows you to delete an entry if you don't want it any more (but be
+#      sure to keep the configdir, name, and order the same, so that we can
+#      find the correct file to remove).
+#
+#   options, nicelevel, testconnect, tmpdir, sign, encryptkey, signkey,
+#   password, include, exclude, vsinclude, incremental, keep, bandwithlimit,
+#   sshoptions, destdir, desthost, desuser:
+#
+#      As defined in the backupninja documentation.  The options will be
+#      placed in the correct sections automatically.  The include and
+#      exclude options should be given as arrays if you want to specify
+#      multiple directories.
+#
+#   directory, ssh_dir_manage, ssh_dir, authorized_keys_file, installuser,
+#   installkey, backuptag:
+#
+#      Options for the bakupninja::server::sandbox define, check that
+#      definition for more info.
+#
+# Some notes about this handler:
+#
+#   - There's no support for a 'local' type in backupninja's duplicity
+#     handler on version 0.9.6-4, which is the version available in stable and
+#     testing debian repositories by the time of this writing.
+define backupninja::duplicity( $order  = 90,
+                               $ensure = present,
+                               # options to the config file
+                               $options     = false, #
+                               $nicelevel   = 0, #
+                               $testconnect = "yes", #
+                               $tmpdir      = "/var/tmp/duplicity", #
+                               # [gpg]
+                               $sign       = "no",
+                               $encryptkey = false,
+                               $signkey    = false,
+                               $password   = "a_very_complicated_passphrase",
+                               # [source]
+                               $include = [ "/var/spool/cron/crontabs",
+                                            "/var/backups",
+                                            "/etc",
+                                            "/root",
+                                            "/home",
+                                            "/usr/local/*bin",
+                                            "/var/lib/dpkg/status*" ],
+                               $exclude = [ "/home/*/.gnupg",
+                                            "/home/*/.local/share/Trash",
+                                            "/home/*/.Trash",
+                                            "/home/*/.thumbnails",
+                                            "/home/*/.beagle",
+                                            "/home/*/.aMule",
+                                            "/home/*/.gnupg",
+                                            "/home/*/.gpg",
+                                            "/home/*/.ssh",
+                                            "/home/*/gtk-gnutella-downloads"],
+                               $vsinclude = false,
+                               # [dest]
+                               $incremental   = "yes",
+                               $keep          = 60,
+                               $bandwithlimit = "128",
+                               $sshoptions    = false,
+                               $destdir       = "/backups",
+                               $desthost      = false,
+                               $destuser      = false,
+                               # options to backupninja's module sandbox
+                               $ssh_dir_manage       = true,
+                               $ssh_dir              = false,
+                               $authorized_keys_file = false,
+                               $installuser          = true,
+                               $backuptag            = false,
+                               # key options
+                               $installkey           = true ) {
+  include backupninja::client
+
+  case $host { false: { err("need to define a host for remote backups!") } }
+  
+  # guarantees there's a configured backup space for this backup
+  backupninja::server::sandbox { "${user}-${name}":
+    user                 => $destuser,
+    host                 => $desthost,
+    dir                  => $destdir,
+    manage_ssh_dir       => $ssh_dir_manage,
+    ssh_dir              => $ssh_dir,
+    authorized_keys_file => $authorized_keys_file,
+    installuser          => $installuser,
+    backuptag            => $backuptag,
+  }
+  
+  # the client's ssh key
+  backupninja::client::key { "${destuser}-${name}":
+    user       => $destuser,
+    host       => $desthost,
+    installkey => $installkey,
+  }
+
+  # the backupninja rule for this duplicity backup
+  file { "${backupninja::client::configdir}/${order}_${name}.duplicity":
+    ensure  => $ensure,
+    content => template('backupninja/dup.conf.erb'),
+    owner   => root,
+    group   => root,
+    mode    => 0600,
+    require => File["${backupninja::client::configdir}"]
+  }
+}
+  
index 1c4ccfcee0eb4bc2507fbe5885d5f61eadba7e29..ce77a5caa102e896f858c868f3de0e9a5514785c 100644 (file)
@@ -40,3 +40,4 @@
 <%= 'sshoptions = ' + sshoptions if sshoptions %>
 <%= 'destdir = ' + destdir if destdir %>
 <%= 'desthost = ' + desthost if desthost %>
+<%= 'destuser = ' + destuser if destuser %>