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
|
# File 'modules/admin/manifests/groupmembers.pp', line 11
define admin::groupmembers(
String $default_member = 'root',
) {
$gdata = $::admin::data['groups'][$name]
$group_name = pick($gdata['posix_name'], $name)
$members = Array($gdata['members'], true)
$system_members = Array($gdata['system_members'], true)
$user_list = ($members + $system_members).filter |$user| { $user =~ NotUndef }
$joined_user_list = $user_list.empty ? {
true => $default_member,
default => $user_list.flatten().join(','),
}
# this list is inclusive. anyone not defined is removed.
# check for group existence and if so compare current users
$group_nonexistent="getent group ${group_name} | xargs test -z"
$members_match="getent group ${group_name} | cut -d ':' -f 4 | grep -E ^${joined_user_list}$"
exec { "${group_name}_ensure_members":
command => "/usr/bin/gpasswd ${group_name} -M ${joined_user_list}",
path => '/usr/bin:/bin',
unless => "${group_nonexistent} || ${members_match}",
logoutput => true,
require => User[$user_list],
}
}
|