summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormh <mh@immerda.ch>2008-10-20 20:51:27 +0000
committermh <mh@immerda.ch>2008-10-20 20:51:27 +0000
commitd6839221b86fc1dde6a355bb9c55c9a88855e90e (patch)
tree530320d7be825d197a1d0b288429b46c14bbaae7
parent48be6d100bf37b434e0cb77c5e22d08fb17dbd3d (diff)
refactored defines into defines.pp
-rw-r--r--manifests/defines.pp119
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
+}