Ich erstelle einen Benutzer wie folgt
user { $username:
comment => "$name",
shell => "$shell",
managehome => false,
password => "$password",
groups => $groups
}
Jetzt, wie Sie sehen können, mache ich eine Verwaltung, ist falsch. Später in der Spur muss ich eine Datei in das Home-Verzeichnis des Benutzers verschieben.
$key = "${homedir}/${name}/file"
file { $key:
ensure => present,
owner => $username,
group => $username,
mode => 600,
content => "$keyvalue",
subscribe => User[$username],
}
Wie kann ich das Home-Verzeichnis des Benutzers dafür bekommen?
Ich habe versucht, eine Lösung für genau dasselbe Problem zu finden, und es stellte sich heraus, dass es am besten ist, einen etwas anderen Ansatz zu wählen.
Definieren Sie das Basisverzeichnis explizit, zum Beispiel:
Wenn
managehome
false ist, wird nicht einmal das Basisverzeichnis erstellt. Sie müssen es also spezifisch definieren. Es ist oft am besten, eine benutzerdefinierte Definition für den gesamten Benutzer zu erstellen:Sie können beispielsweise weitere Parameter hinzufügen
$keyvalue
und eine Schlüsseldatei erstellen, wenn dieser Parameter angegeben ist.Sie können auch eine globale Variable definieren
$home = "/home"
(betriebssystemspezifisch, falls erforderlich) und das Home-Verzeichnis mit verwenden"${home}/${username}"
.Bearbeiten: Verwenden von Hash, um benutzerspezifische Basisverzeichnisse zu definieren
Neuere Puppet-Versionen (> = 2.6) unterstützen Hashes. Es wäre möglich, einen Hash-Inhalt zu definieren
username => /path/to/home
Zuordnungen für jeden Benutzer :Für jeden Benutzernamen ist es dann einfach, das Home-Verzeichnis mit zu bekommen
$home['username']
.Home-Verzeichnis-Hash mit Fallback
In den meisten Fällen ist es am besten, einen "Fallback-Standard" zu verwenden, wenn der Benutzer im Hash nicht vorhanden ist. Theoretisch ist dies möglich, obwohl die Syntax ein wenig kryptisch und aufgedunsen ist:
quelle
Diese Frage ist alt, aber immer noch relevant. Es gibt tatsächlich einen besseren Weg. Fügen Sie [module] /lib/facter/home_dirs.rb einen benutzerdefinierten Fakt hinzu , der Folgendes enthält:
Dann können Sie auf folgende Weise auf die Daten im Manifest zugreifen:
Denken Sie daran, dass dies nur funktioniert, wenn der Benutzer bereits vor dem Puppenspiel existiert. Wenn der Benutzer während des Laufs erstellt wird, sollte das Basisverzeichnis bereits bekannt oder zumindest vorhersehbar sein. Puppet soll schließlich Ordnung schaffen.
Hoffe das hilft jemandem.
quelle