rdiff.pp 4.35 KB
Newer Older
Micah Anderson's avatar
Micah Anderson committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# Run rdiff-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).
#
#   keep, include, exclude, type, host, directory, user, sshoptions: 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.
# 
Jerome Charaoui's avatar
Jerome Charaoui committed
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
define backupninja::rdiff( $order  = 90,
                           $ensure = present,
                           # [general]
                           $options = '--force',
                           $extras  = 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"
                                      ],
                           $vsinclude = false,
                           # [dest]
                           $type       = 'local',
                           $host       = false,
                           $user       = false,
                           $home       = "/home/${user}-${name}",
                           $keep       = 30,
                           $sshoptions = 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}" ) {

62
  # install client dependencies
63
  ensure_resource('package', 'rdiff-backup', {'ensure' => $backupninja::ensure_rdiffbackup_version})
64

65
  $directory = "$home/$name/"
66

67 68 69
  case $type {
    'remote': {
      case $host { false: { err("need to define a host for remote backups!") } }
70

Jerome Charaoui's avatar
Jerome Charaoui committed
71 72 73 74 75 76 77 78 79 80 81 82
      backupninja::server::sandbox { "${user}-${name}":
        user                 => $user,
        host                 => $host,
        dir                  => $home,
        manage_ssh_dir       => $ssh_dir_manage,
        ssh_dir              => $ssh_dir,
        key                  => $key,
        authorized_keys_file => $authorized_keys_file,
        installuser          => $installuser,
        backuptag            => $backuptag,
        backupkeys           => $backupkeystore,
        keytype              => $backupkeytype,
83
      }
84
     
Jerome Charaoui's avatar
Jerome Charaoui committed
85 86
      backupninja::key { "${user}-${name}":
        user      => $user,
87
        keymanage => $keymanage,
Jerome Charaoui's avatar
Jerome Charaoui committed
88 89
        keytype   => $backupkeytype,
        keystore  => $backupkeystore,
90 91 92
      }
    }
  }
93 94


95
  file { "${backupninja::configdir}/${order}_${name}.rdiff":
Jerome Charaoui's avatar
Jerome Charaoui committed
96
    ensure  => $ensure,
97
    content => template('backupninja/rdiff.conf.erb'),
Jerome Charaoui's avatar
Jerome Charaoui committed
98 99 100
    owner   => root,
    group   => root,
    mode    => 0600,
101
    require => File["${backupninja::configdir}"]
102
  }
103 104 105 106 107

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

Micah Anderson's avatar
Micah Anderson committed
108
}
109