summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormh <mh@immerda.ch>2010-05-20 02:14:25 +0200
committermh <mh@immerda.ch>2010-05-20 02:14:25 +0200
commit33b7ff7beae92c09a9462ed048936cc68ba109c4 (patch)
tree131c7bde663ad310c22e748c986d57abe1eb9085
parent8671c39470fbe8ab3196efd42963364666da45b6 (diff)
add a define to manage users in groups
-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}']",
+ }
+ }
+}
+