diff options
author | mh <mh@immerda.ch> | 2008-10-20 20:51:27 +0000 |
---|---|---|
committer | mh <mh@immerda.ch> | 2008-10-20 20:51:27 +0000 |
commit | d6839221b86fc1dde6a355bb9c55c9a88855e90e (patch) | |
tree | 530320d7be825d197a1d0b288429b46c14bbaae7 /manifests | |
parent | 48be6d100bf37b434e0cb77c5e22d08fb17dbd3d (diff) |
refactored defines into defines.pp
Diffstat (limited to 'manifests')
-rw-r--r-- | manifests/defines.pp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/manifests/defines.pp b/manifests/defines.pp new file mode 100644 index 0000000..c800b88 --- /dev/null +++ b/manifests/defines.pp @@ -0,0 +1,119 @@ +# manifests/defines.pp + +# ssh:_key have to be handed over as the classname +# containing the ssh_keys +define user::define_user( + $name_comment = 'absent', + $uid = 'absent', + $gid = 'absent', + $groups = [], + $membership = 'minimum', + $homedir = 'absent', + $managehome = 'true', + $homedir_mode = '0750', + $sshkey = 'absent', + $shell = 'absent' +){ + + $real_homedir = $homedir ? { + 'absent' => "/home/$name", + default => $homedir + } + + $real_name_comment = $name_comment ? { + 'absent' => $name, + default => $name_comment, + } + + $real_shell = $shell ? { + 'absent' => $operatingsystem ? { + openbsd => "/usr/local/bin/bash", + default => "/bin/bash", + }, + default => $shell, + } + + user { $name: + allowdupe => false, + comment => "$real_name_comment", + ensure => present, + home => $real_homedir, + managehome => $managehome, + shell => $real_shell, + groups => $groups, + membership => $membership, + } + + file{"$real_homedir": + ensure => directory, + require => User[$name], + owner => $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': { + File[$real_homedir]{ + group => $name, + } + } + default: { + File[$real_homedir]{ + group => $gid, + } + } + } + + case $sshkey { + 'absent': { info("no sshkey to manage for user $name") } + default: { + User[$name]{ + before => Class[$sshkey], + } + include $sshkey + } + } +} + + +define user::sftp_only( + +) { + include user::groups::sftponly +} |