Ich versuche, ein Salzausführungsmodul zu erstellen, und ich habe Probleme, cmd.run
korrekt im Modul zu verwenden.SaltStack-Ausführungsmodul kann cmd.run nicht korrekt verwenden
Wenn ich laufen (masterless Günstling verwenden):
salt-call cmd.run "cat hey.txt | grep 'hey there'"
ich:
[INFO ] Executing command 'cat hey.txt | grep 'hey there'' in directory '/root'
local:
hey there
das ist, was ich erwarten würde, wie diese Katze auf die Datei verwendet und greps die entsprechende Zeile. Allerdings, wenn ich dies als eine Funktion in meinem Ausführungsmodul implementieren:
def foo():
return __salt__['cmd.run']("cat hey.txt | grep 'hey there'")
und ich nenne es nach dem Modul Synchronisierung:
salt-call example.foo
es gibt (den zweiten Fehler gerade druckt den Inhalt hey .txt):
[INFO ] Executing command 'cat hey.txt | grep 'hey there'' in directory '/root'
[ERROR ] Command 'cat hey.txt | grep 'hey there'' failed with return code: 1
[ERROR ] output: hey there
stranger
I like your
boots
cat: '|': No such file or directory
cat: grep: No such file or directory
cat: 'hey there': No such file or directory
local:
hey there
stranger
I like your
boots
cat: '|': No such file or directory
cat: grep: No such file or directory
cat: 'hey there': No such file or directory
so scheint es, als ob aus irgendeinem Grund ist es nicht das grep als Befehl zu erkennen und versucht, nur zu Katze alles auf der Kommandozeile, aber die INFO sagt der comm und wurde genau so ausgeführt, als ob ich es direkt durch Aufruf von cmd.run gemacht hätte, also bin ich verwirrt darüber, warum das passiert.
Sie können Ihre eigene Frage beantworten und akzeptieren, um anderen zu helfen, die dieselbe Frage wie Sie stellen können :) –