home-harmening:puppet:manifests:create_user.pp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
home-harmening:puppet:manifests:create_user.pp [2024/10/09 11:01] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1home-harmening:puppet:manifests:create_user.pp [2024/10/09 11:01] (aktuell) – ↷ Seite von puppet:manifests:create_user.pp nach home-harmening:puppet:manifests:create_user.pp verschoben charmening
Zeile 1: Zeile 1:
 +Puppet manifest um einen Benutzer zu erstellen. **In diesem Beispiel existieren auf dem Puppeserver die ssh Schlüsseldateien und werden nicht erzeugt.**
 +\\ \\
 +<code>
 +# 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"],
 +  }
 +}
 +</code>