Ich habe ein Templat SLS
in Salt, das ich zu erstellen versuche, aber es gibt eine ungültige Syntax aus, die zu Fehlern führt, wie zum Beispiel:
my-minion-id:
- State 'system' in SLS 'network' is not formed as a list
Im Prinzip sollte es möglich sein, irgendwie die Ausgabe der Vorlage Jinja zu untersuchen , bevor sie den Ausgang als zu analysieren versucht SLS
Datei. Es gibt ein Python-Modul für den Jinja-Renderer salt.renderers.jinja
, aber wenn ich versuche, es auf der CLI auszuführen, erhalte ich eine Fehlermeldung:
# salt my-minion-id salt.renderers.jinja.render /srv/salt/network/init.sls
my-minion-id:
'salt.renderers.jinja.render' is not available.
ERROR: Minions returned with non-zero exit code
# salt my-minion-id renderers.jinja.render /srv/salt/network/init.sls
my-minion-id:
'renderers.jinja.render' is not available.
ERROR: Minions returned with non-zero exit code
Wie kann ich die Ausgabe meiner Vorlage sehen? Es scheint absurd, dass es so schwierig sein sollte, Fehler zu beheben.
salt minion-id cp.cache_file salt://network/init.sls
slsutil.renderer für die zurückgespeicherte Datei ausführen, nachdem sie auf dem Minion zwischengespeichert wurde. Ab 2018.3 können Sie auchsalt://network/init.sls
Angesichts der Zeit, die ich vor Wochen mit einem eng verwandten Thema verbracht habe, wünschte ich, ich hätte das früher herausgefunden.
Die Lösung scheint darin zu bestehen,
salt.modules.cp.get_template
dass der Salt Minion die Datei abruft, sie durch die Templating-Engine rendert und an einem lesbaren Ort ablegt:Von dort stellen Sie eine Verbindung zum
my-minion-id
Host her und überprüfen die Datei, in der Sie sich befinden/root/network.sls
.Das macht Sinn;
salt.renderers.jinja
befindet sich imsalt.renderers
Namespace, während sich die Module, auf die Sie über die CLI zugreifen können, imsalt.modules
Namespace befinden.Dies ist auch unter dem Gesichtspunkt der Datensichtbarkeit sinnvoll. Template-Rendering findet auf dem Minion statt , auf dem Körner und dergleichen verfügbar sind, und ich habe noch kein Modul gesehen, das Minion-Code ausführt, um willkürliche Ausgaben an den Master zurückzugeben (zum Beispiel für die Anzeige auf der CLI). Die zurückgegebenen Daten sind ausnahmslos gut strukturiert und präzise. (Es mag ein solches Modul geben, aber ich weiß nicht, was es ist. Es wäre eine vorzuziehende Lösung, Testdateien auf einen Minion abzulegen.)
edit: @gtmanfreds Antwort ist viel besser und direkter, und ich habe diese akzeptiert. Ich lasse dieses hier zu informativen Zwecken. Es ist nicht die beste Lösung, aber es funktioniert immer noch.
quelle