rsync.pp 3.26 KB
Newer Older
Silvio Rhatto's avatar
Silvio Rhatto committed
1 2 3 4
# Run rsync as part of a backupninja run.
# Based on backupninja::rdiff

define backupninja::rsync(
5 6
  $order = 90, $ensure = present, $ensure_rsync_version = 'installed',
  $user = false, $home = false, $host = false,
Silvio Rhatto's avatar
Silvio Rhatto committed
7 8
  $ssh_dir_manage = true, $ssh_dir = false, $authorized_keys_file = false,
  $installuser = true, $installkey = true, $key = false, $backuptag = false,
9
  $home = false, $backupkeytype = $backupninja::keytype, $backupkeystore = $backupninja::keystore, $extras = false,
Silvio Rhatto's avatar
Silvio Rhatto committed
10 11 12
  $nagios2_description = 'backups', $subfolder = 'rsync',

  $log = false, $partition = false, $fscheck = false, $read_only = false,
Silvio Rhatto's avatar
Silvio Rhatto committed
13
  $mountpoint = false, $backupdir = false, $format = false, $days = false,
Silvio Rhatto's avatar
Silvio Rhatto committed
14 15 16
  $keepdaily = false, $keepweekly = false, $keepmonthly = false, $lockfile = false,
  $nicelevel = 0, $enable_mv_timestamp_bug = false, $tmp = false, $multiconnection = false,

Silvio Rhatto's avatar
Silvio Rhatto committed
17
  $exclude_vserver = false,
Silvio Rhatto's avatar
Silvio Rhatto committed
18 19 20 21 22 23
  $exclude = [ "/home/*/.gnupg", "/home/*/.local/share/Trash", "/home/*/.Trash",
               "/home/*/.thumbnails", "/home/*/.beagle", "/home/*/.aMule",
               "/home/*/gtk-gnutella-downloads" ],
  $include = [ "/var/spool/cron/crontabs", "/var/backups", "/etc", "/root",
               "/home", "/usr/local/*bin", "/var/lib/dpkg/status*" ],

Silvio Rhatto's avatar
Silvio Rhatto committed
24
  $testconnect = false, $protocol = false, $ssh = false, $port = false,
25 26 27
  $bandwidthlimit = false, $remote_rsync = false, $id_file = false,
  $batch = false, $batchbase = false, $numericids = false, $compress = false,
  $fakesuper = false,
Silvio Rhatto's avatar
Silvio Rhatto committed
28

29
  $initscripts = false, $service = false,
Silvio Rhatto's avatar
Silvio Rhatto committed
30

31
  $rm = false, $cp = false, $touch = false, $mv = false, $fsck = false)
Silvio Rhatto's avatar
Silvio Rhatto committed
32
{
33 34
  # install client dependencies
  ensure_resource('package', 'rsync', {'ensure' => $ensure_rsync_version})
Silvio Rhatto's avatar
Silvio Rhatto committed
35

Silvio Rhatto's avatar
Silvio Rhatto committed
36 37 38
  # Right now just local origin with remote destination is supported.
  $from = 'local'
  $dest = 'remote'
Silvio Rhatto's avatar
Silvio Rhatto committed
39

Silvio Rhatto's avatar
Silvio Rhatto committed
40 41 42 43 44
  case $dest {
    'remote': {
      case $host { false: { err("need to define a host for remote backups!") } }

      $real_backuptag = $backuptag ? {
Silvio Rhatto's avatar
Silvio Rhatto committed
45 46
        false   => "backupninja-$fqdn",
        default => $backuptag,
Silvio Rhatto's avatar
Silvio Rhatto committed
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
      }

      $real_home = $home ? {
        false   => "/home/${user}-${name}",
        default => $home,
      }

      $directory = "${real_home}/${subfolder}/"

      backupninja::server::sandbox { "${user}-${name}":
        user                 => $user,
        host                 => $host,
        dir                  => $real_home,
        manage_ssh_dir       => $ssh_dir_manage,
        ssh_dir              => $ssh_dir,
        key                  => $key,
        authorized_keys_file => $authorized_keys_file,
        installuser          => $installuser,
        backuptag            => $real_backuptag,
        keytype              => $backupkeytype,
        backupkeys           => $backupkeystore,
        nagios2_description  => $nagios2_description
      }
     
      backupninja::client::key { "${user}-${name}":
        user       => $user,
        host       => $host,
        installkey => $installkey,
        keytype    => $backupkeytype,
        keystore   => $backupkeystore,
      }
    }
  }

81
  file { "${backupninja::configdir}/${order}_${name}.rsync":
Silvio Rhatto's avatar
Silvio Rhatto committed
82 83 84 85 86
    ensure  => $ensure,
    content => template('backupninja/rsync.conf.erb'),
    owner   => root,
    group   => root,
    mode    => 0600,
87
    require => File["${backupninja::configdir}"]
Silvio Rhatto's avatar
Silvio Rhatto committed
88 89
  }
}