Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
USAGE:

local_user{"ohad": uid => 1234, gid => 1234,
  comment => "Ohad Levy", sudo => true,
}



define local_user ($comment, $ensure = 'present',
  $uid, $gid, $homedir = '', $groups = '', $group = '',
  $shell = "/bin/bash", $sudo=false )
{
  case $homedir {
    '': {
      $home="/home/${name}"
      }
    default: { $home=$homedir }
  }

  user { $name:
    allowdupe => false,
    comment => $comment,
    ensure => $ensure,
    gid => $gid,
    home => $home,
    shell => $shell,
    uid => $uid,
    groups => $groups ? {
      '' => undef,
      default => $groups
    }
  }
  case $group {
    '': {
      group { $name:
        allowdupe => false,
        ensure => $ensure,
        gid => $gid,
      }
      $real_group = $name
    }
    default: {
      $real_group = $group
    }
  }

  file {
    "$home":
      ensure => directory,
# keep 0751 to enable public_html acces and similar things
        mode => 0701, owner => $name, group => $real_group;
    "$home/.toprc":
      source => ["$fileserver/users/.toprc.$name",
                "$fileserver/users/.toprc"],
      mode => 0640, owner => $name, group => $real_group;
    "$home/.bashrc":
      source => ["$fileserver/users/.bashrc.$name",
                "$fileserver/users/.bashrc"],
      mode => 0640, owner => $name, group => $real_group;
    "$home/.bash_profile":
      ensure => link, target => "$home/.bashrc";
    "$home/.ssh":
      ensure => directory,
      mode => 0700, owner => $name, group => $real_group;
    "$home/.ssh/authorized_keys":
      source => ["$fileserver/users/.ssh/authorized_keys.$name",
                "$fileserver/users/.ssh/authorized_keys"],
      mode => 0600, owner => $name, group => $real_group;
    "$home/.ssh/config":
      source => ["$fileserver/users/.ssh/config.$name",
                 "$fileserver/users/.ssh/config"],
      mode => 0600, owner => $name, group => $real_group;
    "$home/.vimrc":
      source => ["$fileserver/users/.vimrc.$name",
                 "$fileserver/users/.vimrc"],
      mode => 0600, owner => $name, group => $real_group;

  }
  if $sudo { sudo::nopasswd{$name: name => $name} }
}