]> git.immae.eu Git - perso/Immae/Projets/Puppet.git/blobdiff - modules/base_installation/manifests/users.pp
Fix package dependencies for base installation
[perso/Immae/Projets/Puppet.git] / modules / base_installation / manifests / users.pp
index aff19bb97eb143810918706147e68cba8858e979..1ce5da76e3c0997d24d7648ff4e6e7083daef52f 100644 (file)
@@ -15,51 +15,62 @@ class base_installation::users (
 
   sudo::conf { 'wheel':
     priority => 10,
-    content  => "%wheel ALL=(ALL) ALL"
+    content  => "%wheel ALL=(ALL) ALL",
+    require  => Package["sudo"],
   }
 
   contain "sudo"
 
   $users.each |$user| {
-    user { "${user[username]}:${user[userid]}":
-      name           => $user[username],
-      uid            => $user[userid],
-      ensure         => "present",
-      groups         => $user[groups],
-      managehome     => true,
-      system         => !!$user[system],
-      home           => "/home/${user[username]}",
-      notify         => Exec["remove_password:${user[username]}:${user[userid]}"],
-      purge_ssh_keys => true
-    }
+    if ($user["username"] != "root") {
+      unless $user["shell"] == undef or empty($user["shell"]) {
+        ensure_packages([$user["shell"]])
+        $shell = "/bin/${user[shell]}"
+      } else {
+        $shell = undef
+      }
+
+      user { "${user[username]}:${user[userid]}":
+        name           => $user[username],
+        uid            => $user[userid],
+        ensure         => "present",
+        groups         => $user[groups],
+        managehome     => true,
+        system         => !!$user[system],
+        home           => "/home/${user[username]}",
+        shell          => $shell,
+        notify         => Exec["remove_password:${user[username]}:${user[userid]}"],
+        purge_ssh_keys => true
+      }
 
-    exec { "remove_password:${user[username]}:${user[userid]}":
-      command     => "/usr/bin/chage -d 0 ${user[username]} && /usr/bin/passwd -d ${user[username]}",
-      onlyif      => "/usr/bin/test -z '${user[password]}'",
-      refreshonly => true
+      exec { "remove_password:${user[username]}:${user[userid]}":
+        command     => "/usr/bin/chage -d 0 ${user[username]} && /usr/bin/passwd -d ${user[username]}",
+        onlyif      => "/usr/bin/test -z '${user[password]}'",
+        refreshonly => true
+      }
     }
 
     if has_key($user, "keys") {
       $user[keys].each |$key| {
-        ssh_authorized_key { "${user[username]}@${key[host]}":
-          name => "${user[username]}@${key[host]}",
-          user => $user[username],
-          type => $key[key_type],
-          key  => $key[key],
-        }
-
-        if has_key($key, "root_command") {
-          ssh_authorized_key { "${user[username]}@${key[host]}:root":
-            name    => "${user[username]}@${key[host]}:root",
-            user    => "root",
+        if has_key($key, "command") {
+          ssh_authorized_key { "${user[username]}@${key[host]}":
+            name    => "${user[username]}@${key[host]}",
+            user    => $user[username],
+            type    => $key[key_type],
+            key     => $key[key],
             options => [
-              "command=\"${key[root_command]}\"",
+              "command=\"${key[command]}\"",
               "no-port-forwarding",
               "no-X11-forwarding",
               "no-pty",
             ],
-            type    => $key[key_type],
-            key     => $key[key],
+          }
+        } else {
+          ssh_authorized_key { "${user[username]}@${key[host]}":
+            name => "${user[username]}@${key[host]}",
+            user => $user[username],
+            type => $key[key_type],
+            key  => $key[key],
           }
         }
       }