Ich versuche, ein einzelnes Modul wie folgt auszuführen:
puppet apply --verbose --modulepath=moduleshere --noop -e 'include myclass'
Ich erhalte jedoch diese Art von Fehler, der angibt, dass der Pfad nicht festgelegt ist
Parameter unless failed: '[ -e "${logfile}" ]' is not qualified and no path was specified. Please qualify the command or specify a path.
Ich möchte den Pfad nicht an jedem solchen Ort explizit angeben, und er funktioniert einwandfrei, wenn er als Teil eines vollständigen Puppenspiels ausgeführt wird. Wie kann ich den Pfad angeben, wenn ein einzelnes Modul ausgeführt wird?
Antworten:
Die Befehle in einer
Exec
Ressource müssen entweder vollständig qualifiziert sein (dh/usr/bin/test
stattdessentest
) oder daspath
Attribut dieserExec
Ressource muss festgelegt werden.Wenn Sie das Puppet-Manifest (die Puppet-Manifeste) ändern können, können Sie einfach die folgende Definition hinzufügen, um ein Standardattribut
path
für alleExec
Ressourcen festzulegen/bin
:Als (mehr oder weniger) schmutzige Umgehung können Sie auch einfach den Standard
path
für jedeExec
Ressource in der Befehlszeile festlegen :Dokumentationshinweise:
quelle
Das ... sollte nicht Teil eines vollen Laufs sein. Es wird ein vollständiger Pfad zur ausführbaren Datei im
unless
Befehl benötigt. Vielleicht haben Sie einen Pfad in einer globalen Datei festgelegt, der Teil Ihrer vollständigen Läufe ist?Versuchen Sie es
unless => '/usr/bin/[ -e "${logfile}" ]'
stattdessen.quelle
Ich stimme Shane zu, dass der Standardpfad wahrscheinlich in einem Manifest mit globalem Gültigkeitsbereich festgelegt ist. Sie könnten dasselbe tun, aber Sie können es nicht als Argument übergeben, also verwenden Sie entweder stdin:
Oder setzen Sie die Exec- und Include-Zeilen in
example.pp
und verwenden Sie dannpuppet apply -v ... example.pp
.quelle
Sie müssen einen vollständig qualifizierten Pfad verwenden.
Zum Beispiel entweder:
oder:
quelle