]> gitweb.fluxo.info Git - puppet-backupninja.git/commitdiff
allow arbitrary keyfiles to be distributed alongside the rdiff plugin
authorAntoine Beaupre <anarcat@koumbit.org>
Thu, 11 Dec 2008 15:12:24 +0000 (10:12 -0500)
committerAntoine Beaupre <anarcat@koumbit.org>
Thu, 11 Dec 2008 15:12:24 +0000 (10:12 -0500)
manifests/rdiff.pp
manifests/server.pp

index ed1ea554372cfae1bf1dfc02ce1bf69016952737..4abc9b270aa33f6764992a95223dc5c424758031 100644 (file)
@@ -24,7 +24,7 @@ define backupninja::rdiff(
   $include = [ "/var/spool/cron/crontabs", "/var/backups", "/etc", "/root",
                "/home", "/usr/local/*bin", "/var/lib/dpkg/status*" ],
   $vsinclude = false, $keep = 30, $sshoptions = false, $options = false, $ssh_dir_manage = true,
-  $ssh_dir = false, $authorized_keys_file = false, $installuser = true, $installkey = true,
+  $ssh_dir = false, $authorized_keys_file = false, $installuser = true, $installkey = true, $key = false,
   $backuptag = false)
 {
   $directory = "$home/rdiff-backup/"
@@ -36,7 +36,7 @@ define backupninja::rdiff(
       backupninja::server::sandbox
       {
         "${user}-${name}": user => $user, host => $host, dir => $home,
-        manage_ssh_dir => $ssh_dir_manage, ssh_dir => $ssh_dir,
+        manage_ssh_dir => $ssh_dir_manage, ssh_dir => $ssh_dir, key => $key,
         authorized_keys_file => $authorized_keys_file, installuser => $installuser,
         backuptag => $backuptag
       }
index bf7e78804c62253ed7a076161fec05a0b9860e1b..60332490434a57787102edb922f80d78e6f7ae24 100644 (file)
@@ -25,6 +25,7 @@ class backupninja::server {
   
   User <<| tag == "backupninja-$real_backupserver_tag" |>>
   File <<| tag == "backupninja-$real_backupserver_tag" |>>
+  Ssh_authorized_key <<| tag == "backupninja-$real_backupserver_tag" |>>
 
   package { [ "rsync", "rdiff-backup" ]: ensure => installed }
 
@@ -32,7 +33,7 @@ class backupninja::server {
   # get created on the server
   define sandbox(
     $user = false, $host = false, $installuser = true, $dir = false, $manage_ssh_dir = true,
-    $ssh_dir = false, $authorized_keys_file = false, $backupkeys = false, $uid = false,
+    $ssh_dir = false, $authorized_keys_file = false, $key = false, $key_type = 'ssh-dss', $backupkeys = false, $uid = false,
     $gid = "backupninjas", $backuptag = false)
   {
     
@@ -83,13 +84,26 @@ class backupninja::server {
             }
           }
         } 
-        @@file { "${real_ssh_dir}/${real_authorized_keys_file}":
-          ensure => present,
-          mode => 0644, owner => 0, group => 0,
-          source => "$real_backupkeys/${real_user}_id_rsa.pub",
-          require => File["${real_ssh_dir}"],
-          tag => "$real_backuptag",
-        }
+       case $key {
+         false: {
+            @@file { "${real_ssh_dir}/${real_authorized_keys_file}":
+              ensure => present,
+              mode => 0644, owner => 0, group => 0,
+              source => "$real_backupkeys/${real_user}_id_rsa.pub",
+              require => File["${real_ssh_dir}"],
+              tag => "$real_backuptag",
+            }
+         }
+         default: {
+           @@ssh_authorized_key{ $real_user:
+             type => $key_type,
+              key => $key,
+             user => $real_user,
+             target => "${real_ssh_dir}/${real_authorized_keys_file}",
+                     tag => "$real_backuptag",
+            }
+          }
+       }
         case $uid {
           false: {
             @@user { "$real_user":