Ich habe einen Schritt in einem Puppet-Modul, der ungefähr Folgendes ausführt, um einige Anwendungsschlüssel einzurichten:
file { '/root/setup_app_keys.sh':
ensure => file,
owner => 'root',
group => 'root',
mode => '0700',
source => 'puppet:///modules/app_module/setup_app_keys.sh',
}
exec { 'setup_app_keys':
unless => '/etc/pki/tls/private/app-foo.key',
command => '/root/setup_app_keys.sh',
user => 'root',
group => 'root',
}
Das setup_app_keys.sh
Skript ist etwas zu lang, um in einen (lesbaren) Einzeiler umgewandelt zu werden. Daher speichere ich es im Dateisystem des Computers und führe es von dort aus aus. Es erstellt seine Dateien in /etc/pki...
und es funktioniert gut genug.
Das nervige ist, dass das Shell-Skript im Grunde genommen eine einmalige Verwendung ist. Es sollte während der gesamten Lebensdauer des Computers nie wieder ausgeführt werden, und dennoch muss es auf dem Dateisystem verbleiben, in dem Puppet es gespeichert hat. Wenn es gelöscht wird, erstellt Puppet es erneut hilfreich.
Ich denke, es muss eine Möglichkeit geben, dies exec
ausschließlich mit neu zu schreiben , damit ich das Skript bei Bedarf vom Puppenmeister herunterladen, einmal ausführen und dann das Skript verwerfen kann (oder es gar nicht erst speichern kann). Aber alles, was ich versucht habe, hat die Form:
command => 'puppet:///modules/app_module/setup_app_keys.sh',
oder
command => 'curl http://__[various puppetmaster URLs]__ | sh',
und keiner der Ansätze scheint zu funktionieren. Frage ich zu viel oder ist dieser Ansatz fehlerhaft?
Antworten:
Sie können versuchen, Ihre vor der Ausführung
file
in einen Übergangszustand zu versetzen . Der Endzustand wäreDies schneidet Altersmaterial zum Zeitpunkt des Schreibens. Ihr Kilometerstand kann variieren.
quelle
Sie können in Ihrem 'exec' hinzufügen
Daher wird es nur erneut ausgeführt, wenn Sie das Skript ändern
oder Sie können nach dem letzten Lauf Ihre 'Datei' hinzufügen
quelle
dafür denke ich ist besser du verwendest ansible oder mcollective, für so etwas benutze ich ansible.
Weitere Informationen dazu.
quelle
Sie können den Befehl über die Vorlage ausführen:
quelle