rsync.pp 5.4 KB
Newer Older
1 2 3
# Run rsync as part of a backupninja run.
# Based on backupninja::rdiff

Jerome Charaoui's avatar
Jerome Charaoui committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 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
define backupninja::rsync( $order  = 90,
                           $ensure = present,
                           # [general]
                           $log             = false,
                           $partition       = false,
                           $fscheck         = false,
                           $read_only       = false,
                           $mountpoint      = false,
                           $format          = false,
                           $days            = false,
                           $keepdaily       = false,
                           $keepweekly      = false,
                           $keepmonthly     = false,
                           $lockfile        = false,
                           $nicelevel       = 0,
                           $tmp             = false,
                           $multiconnection = false,
                           $enable_mv_timestamp_bug = false,
                           # [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/*/gtk-gnutella-downloads"
                                      ],
                           # [dest]
                           $host           = false,
                           $user           = false,
                           $home           = "/home/${user}-${name}",
                           $subfolder      = 'rsync',
                           $testconnect    = false,
                           $ssh            = false,
                           $protocol       = false,
                           $numericids     = false,
                           $compress       = false,
                           $port           = false,
                           $bandwidthlimit = false,
                           $remote_rsync   = false,
                           $batch          = false,
                           $batchbase      = false,
                           $fakesuper      = false,
                           $id_file        = false,
                           # [services]
                           $initscripts = false,
                           $service     = false,
                           # [system]
                           $rm    = false,
                           $cp    = false,
                           $touch = false,
                           $mv    = false,
                           $fsck  = false,
                           # ssh keypair config
                           $key                  = false,
                           $keymanage            = $backupninja::keymanage,
                           $backupkeystore       = $backupninja::keystore,
                           $backupkeytype        = $backupninja::keytype,
                           $ssh_dir_manage       = true,
                           $ssh_dir              = "${home}/.ssh",
                           $authorized_keys_file = 'authorized_keys',
                           # sandbox config
                           $installuser = true,
                           $backuptag   = "backupninja-${::fqdn}",
                           # monitoring
                           $nagios_description = "backups-${name}" ) {
78

79
  # install client dependencies
80
  ensure_resource('package', 'rsync', {'ensure' => $backupninja::ensure_rsync_version})
81

Silvio Rhatto's avatar
Silvio Rhatto committed
82 83 84
  # Right now just local origin with remote destination is supported.
  $from = 'local'
  $dest = 'remote'
Silvio Rhatto's avatar
Silvio Rhatto committed
85

86 87 88 89
  case $dest {
    'remote': {
      case $host { false: { err("need to define a host for remote backups!") } }

90
      $directory = "${home}/${subfolder}/"
91 92 93 94

      backupninja::server::sandbox { "${user}-${name}":
        user                 => $user,
        host                 => $host,
95
        dir                  => $home,
96 97 98 99 100
        manage_ssh_dir       => $ssh_dir_manage,
        ssh_dir              => $ssh_dir,
        key                  => $key,
        authorized_keys_file => $authorized_keys_file,
        installuser          => $installuser,
101
        backuptag            => $backuptag,
102 103 104 105
        keytype              => $backupkeytype,
        backupkeys           => $backupkeystore,
      }
     
106
      backupninja::key { "${user}-${name}":
107
        user       => $user,
108
        keymanage  => $keymanage,
109 110 111 112 113 114
        keytype    => $backupkeytype,
        keystore   => $backupkeystore,
      }
    }
  }

115
  file { "${backupninja::configdir}/${order}_${name}.rsync":
116 117 118 119 120
    ensure  => $ensure,
    content => template('backupninja/rsync.conf.erb'),
    owner   => root,
    group   => root,
    mode    => 0600,
121
    require => File["${backupninja::configdir}"]
122
  }
123 124 125 126 127

  if $backupninja::manage_nagios {
    nagios::service::passive { $nagios_description: }
  }

128
}