summaryrefslogtreecommitdiff
path: root/puppet/modules/backupninja/manifests/rsync.pp
blob: fc59950b3f33372bff823a6b1f190d2842870b56 (plain)
1
2
3
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Run rsync as part of a backupninja run.
# Based on backupninja::rdiff

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}" ) {

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

  # Right now just local origin with remote destination is supported.
  $from = 'local'
  $dest = 'remote'

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

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

      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,
        keytype              => $backupkeytype,
        backupkeys           => $backupkeystore,
      }
     
      backupninja::key { "${user}-${name}":
        user       => $user,
        keymanage  => $keymanage,
        keytype    => $backupkeytype,
        keystore   => $backupkeystore,
      }
    }
  }

  file { "${backupninja::configdir}/${order}_${name}.rsync":
    ensure  => $ensure,
    content => template('backupninja/rsync.conf.erb'),
    owner   => root,
    group   => root,
    mode    => 0600,
    require => File["${backupninja::configdir}"]
  }

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

}