aboutsummaryrefslogtreecommitdiff
path: root/manifests/server.pp
blob: 40b2dca2e79b885e1ad4b13dd184c0c8714b8475 (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
class backupninja::server {
    $backupdir = $backupdir_override ? {
            '' => "/backup",
	    default => $backupdir_override,
    }
    group { "backupninjas":
            ensure => "present",
            gid => 700
    }
    file { "$backupdir":
            ensure => "directory",
            mode => 750, owner => root, group => "backupninjas"
    }
    User <<| tag == "backupninja-$fqdn" |>>

    # this define allows nodes to declare a remote backup sandbox, that have to
    # get created on the server
    define sandbox($host, $dir = false, $uid = false, $gid = "backupninjas") {
        $real_dir = $dir ? {
	    false => "${backupninja::server::backupdir}/$fqdn",
	    default => $dir,
	}
        case $uid {
            false: {
                @@user { "$name":
                    ensure  => "present",
                    gid     => "$gid",
                    comment => "$name backup sandbox",
                    home    => "$real_dir",
                    managehome => true,
                    shell   => "/bin/sh",
                    password => '*',
                    require => [ Group['backupninjas'], File["/backup"] ],
                    tag => "backupninja-$host"
                }
            }
            default: {
                @@user { "$name":
                    ensure  => "present",
                    uid     => "$uid",
                    gid     => "$gid",
                    comment => "$name backup sandbox",
                    home    => "$real_dir",
                    managehome => true,
                    shell   => "/bin/sh",
                    password => '*',
                    require => [ Group['backupninjas'], File["/backup"] ],
                    tag => "backupninja-$host"
                }
            }
        }
    }
}