summaryrefslogtreecommitdiff
path: root/manifests/groups/manage_user.pp
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/groups/manage_user.pp')
-rw-r--r--manifests/groups/manage_user.pp27
1 files changed, 27 insertions, 0 deletions
diff --git a/manifests/groups/manage_user.pp b/manifests/groups/manage_user.pp
new file mode 100644
index 0000000..9df3a20
--- /dev/null
+++ b/manifests/groups/manage_user.pp
@@ -0,0 +1,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}']",
+ }
+ }
+}
+