summaryrefslogtreecommitdiff
path: root/manifests/groups/manage_user.pp
blob: c0afdef91603cd33a1e36de22983db45631fbd1b (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
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 => [ "set ${group}/user[last()+1] ${real_user}" ],
      onlyif => "match ${group}/*[../user='${real_user}'] size == 0"
    }
  } else {
    Augeas["manage_${real_user}_in_group_${group}"]{
      changes => "rm ${group}/user[.='${real_user}']",
    }
  }
}