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"],
}
}