Puppet eval-Variable nur einmal

Puppet eval-Variable nur einmal

Ich generiere Passwörter für neue Benutzer mitapg

Einfach:

$password = generate('/etc/puppet/utils/gen_password')

Das einzige Problem mit diesem Befehl ist, dass ich ihn nur einmal brauche, er aber bei jedem Ausführen von Puppet ausgewertet wird.

Diese Variable wird innerhalb einesExecErklärung.

Gibt es eine Möglichkeit, die Variable nur auszuwerten, wenn es notwendig ist? Zum Beispiel, wenn sie zum ersten Mal verwendet wird.

Antwort1

Sie können mehrere Optionen verwenden, um exec bedingt auszuführen. Wählen Sie die Option aus, die Ihren Anforderungen entspricht:

  • es sei denn– Wenn dieser Parameter festgelegt ist, wird diese Exec ausgeführt, sofern der Befehl nicht 0 zurückgibt.
  • schafft- Eine Datei, nach der vor dem Ausführen des Befehls gesucht werden soll. Der Befehl wird nur ausgeführt, wenn die Datei nicht vorhanden ist.
  • nur wenn– Wenn dieser Parameter festgelegt ist, wird diese Exec nur ausgeführt, wenn der Befehl 0 zurückgibt.
  • nur aktualisieren– Der Befehl sollte nur als Aktualisierungsmechanismus ausgeführt werden, wenn ein abhängiges Objekt geändert wird.

Antwort2

Wenn Sie das Passwort in einer Exec nicht verwenden, dann die Methoden vorgeschlagen vonKazimieras Aliulisfunktioniert möglicherweise nicht für Sie.

Wenn es nach mir ginge, würde ich das /etc/puppet/utils/gen_passwordSkript wahrscheinlich einfach so ändern, dass es für jeden Dienst/Host immer dasselbe Passwort zurückgibt. Puppet würde den Generte dann folgendermaßen aufrufen generate("/etc/puppet/utils/gen_password $::clientcert").

Anschließend prüfen Sie im Skript, ob für dieses System ein Kennwort generiert wurde, und geben es zurück. Wenn nicht, generieren Sie ein neues Kennwort, speichern es und geben es zurück.

Wenn möglich, speichern und geben Sie das unverschlüsselte Passwort nicht zurück. Generieren und geben Sie stattdessen den gesalzenen Passwort-Hash zurück.

Noch besser wäre es natürlich, wenn Sie ganz auf Passwörter verzichten und stattdessen Zertifikate oder Schlüssel zur Authentifizierung verwenden könnten.

verwandte Informationen