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.shSkript 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 execausschließ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?