summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormh <mh@immerda.ch>2008-10-20 20:17:48 +0000
committermh <mh@immerda.ch>2008-10-20 20:17:48 +0000
commit40d5be01b1a7463f56fc2968f4c66eb4c3f9d7e1 (patch)
tree5493bbff999ec2f1583d3d903d3d76071813a541
parent82686eb0de3bbdc6f7eb9759f4449c8f8e111040 (diff)
merged with puzzle
-rw-r--r--manifests/init.pp106
1 files changed, 78 insertions, 28 deletions
diff --git a/manifests/init.pp b/manifests/init.pp
index d160c3a..72591cc 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -1,35 +1,46 @@
-# modules/user/manifests/init.pp - manage user stuff
+#
+# user module
+#
# Copyright (C) 2007 admin@immerda.ch
+# Copyright 2008, Puzzle ITC
+# Marcel Härry haerry+puppet(at)puzzle.ch
+# Simon Josi josi+puppet(at)puzzle.ch
#
+# This program is free software; you can redistribute
+# it and/or modify it under the terms of the GNU
+# General Public License version 3 as published by
+# the Free Software Foundation.
# ssh:_key have to be handed over as the classname
# containing the ssh_keys
define user::define_user(
- $name_comment = '',
- $uid,
- $gid,
+ $name_comment = 'absent',
+ $uid = 'absent',
+ $gid = 'absent',
$groups = [],
$membership = 'minimum',
- $home_dir = '',
- $home_dir_mode = '0750',
- $ssh_key = '',
- $shell = ''
+ $homedir = 'absent',
+ $managehome = 'true',
+ $homedir_mode = '0750',
+ $sshkey = 'absent',
+ $shell = 'absent'
){
- $real_home_dir = $home_dir ? {
- '' => "/home/$name",
- default => $home_dir
+
+ $real_homedir = $homedir ? {
+ 'absent' => "/home/$name",
+ default => $homedir
}
$real_name_comment = $name_comment ? {
- '' => $name,
- default => $name_comment,
+ 'absent' => $name,
+ default => $name_comment,
}
$real_shell = $shell ? {
- '' => $operatingsystem ? {
- openbsd => "/usr/local/bin/bash",
- default => "/bin/bash",
- },
+ 'absent' => $operatingsystem ? {
+ openbsd => "/usr/local/bin/bash",
+ default => "/bin/bash",
+ },
default => $shell,
}
@@ -37,22 +48,61 @@ define user::define_user(
allowdupe => false,
comment => "$real_name_comment",
ensure => present,
- gid => $gid,
- home => $real_home_dir,
- managehome => true,
+ home => $real_homedir,
+ managehome => $managehome,
shell => $real_shell,
- uid => $uid,
groups => $groups,
membership => $membership,
}
- case $name {
- root: {}
- default: {
- group { $name:
- allowdupe => false,
- ensure => present,
- gid => $gid,
+ file{"$real_homedir":
+ ensure => directory,
+ require => User[$name],
+ owner => $name, group => $name, mode => $homedir_mode;
+ }
+
+ case $uid {
+ 'absent': { info("Not defining a uid for user $name") }
+ default: {
+ User[$name]{
+ uid => $uid,
+ }
+ }
+ }
+
+ case $gid {
+ 'absent': { info("Not defining a gid for user $name") }
+ default: {
+ User[$name]{
+ gid => $gid,
+ }
+ }
+ }
+
+ case $name {
+ root: {}
+ default: {
+ group { $name:
+ allowdupe => false,
+ ensure => present,
+ require => User[$name],
+ }
+ case $gid {
+ 'absent': { info("not defining a gid for group $name") }
+ default: {
+ Group[$name]{
+ gid => $gid,
+ }
+ }
+ }
+ }
+ }
+
+ case $gid {
+ 'absent': { info("no gid defined for user $name") }
+ default: {
+ File[$real_homedir]{
+ group => $gid,
}
}
}