summaryrefslogtreecommitdiff
path: root/manifests/groups/manage_user.pp
blob: 9cd7b133a2364985dab44b2c85edd295b1347a85 (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
define user::groups::manage_user(
    $ensure = 'present',
    $group,
    $user = 'absent'
){

    if ($user != 'absent'){
        $real_user = $user
    } else {
        $real_user = $name
    }

    augeas{"manage_${real_user}_in_group_${group}":
        context => '/files/etc/group',
    }
    if ($ensure == 'present'){
        Augeas["manage_${real_user}_in_group_${group}"]{
            changes => [ "ins user after ${group}/*[self::gid or self::user][last()]",
                         "set ${group}/user[last()] ${real_user}" ],
            onlyif => "match ${group}/*[../user='${real_user}'] size == 0"
        }
    } else {
        Augeas["manage_${real_user}_in_group_${group}"]{
            changes => "rm ${group}/user[.='${real_user}']",
        }
    }
}