home-harmening:puppet:manifests:create_user.pp

Puppet manifest um einen Benutzer zu erstellen. In diesem Beispiel existieren auf dem Puppeserver die ssh Schlüsseldateien und werden nicht erzeugt.

# Erstellt einen Benutzer für ...
# Es werden die Dateien id_ecdsa, id_ecdsa.pub und authorized_keys benötigt für den Benutzer benötigt.

class server_2410::create_user {

  # Password mit pwgen -n 14 -s -y erstellen und den Hashwert mit openssl passwd -6 erstellen
  # Passwort ist 123456789

  $homebin = "/home/user
  $userpw = '$6$...123456789'
  $username = "user"
  $sshkeys = [ 'id_ecdsa', 'id_ecdsa.pub', ]

  $module = "modules/server_2410"
  $msg = "create_user:"

  # Erstelle die Gruppe user
  group { "$msg Erstelle die Gruppe $username": name => "$username", }

  # Erstelle den Benutzer user
  user { "$msg Erstelle den Benutzer $username":
         comment => 'Nutzer für ....',
         name => "$username",
         gid => "$username",
         home => "$homebin",
         password => "$userpw",
         system => true,
         require => Group["$msg Erstelle die Gruppe $username"],
       }

  # Erstelle den .ssh Ordner für den Remotelogin
  exec { "$msg Erstelle den .ssh Ordner für den Benutzer $username":
       path => [ '/usr/bin', ],
       command => "mkdir -p $homebin/.ssh && chown -R $username:$username $homebin",
       onlyif => [ "test ! -d $homebin/.ssh", ],
       }

  file { "$msg Setze die Rechte für den .ssh von $username": path => "$homebin/.ssh", owner => $username, group => $username, mode => '600', }

  # Erstelle die passenden ssh Schlüssel
  $sshkeys.each | $sshkey | {
    file { "$msg Erstelle den sshkey $sshkey für $username":
           ensure => present,
           path => "$homebin/.ssh/$sshkey",
           owner => $username,
           group => $username,
           mode => '600',
           source => "puppet:///$module$homebin/.ssh/$sshkey",
           require => File["$msg Setze die Rechte für den .ssh von $username"],
    }
  }

  # Erstellen die authorized_keys Datei
  file { "$msg Erstelle die authorized_keys Datei für $username":
         ensure => present,
         path => "$homebin/.ssh/authorized_keys",
         owner => $username,
         group => $username,
         mode => '600',
         source => "puppet:///$module$homebin/.ssh/authorized_keys",
         require => File["$msg Setze die Rechte für den .ssh von $username"],
  }
}