Wie ersetzt man in Ansible ein Shell-Modul durch ein Befehlsmodul?

Wie ersetzt man in Ansible ein Shell-Modul durch ein Befehlsmodul?

Ich brauche eine kleine Hilfe.

shellIm folgenden Beispiel muss ich es durch ein Modul ersetzen command. Aber ich bin verwirrt, weil commandes mit Pipe nicht funktioniert.

Also bitte gebt mir die Lösung dieser Aufgabe. Beispiel:

- name: Get the version
  become: true
  run_once: true
  shell: zypper pa | grep eric-odl | awk -F {'print $4'}
  register: odl_version

Wie werde ich diese Aufgabe aufteilen, da jede Befehlsausgabe vom nächsten Befehl abhängig ist?

Antwort1

Ich muss es shelldurch commandein Modul ersetzen.

Vielleicht können Sie mehr Hintergrundinformationen zum Warum und dem, was Sie erreichen möchten, liefern.

Derzeit denke ich, dass man zypperSie versuchen,

Pakete (pa) [Optionen] [Repository] …

Listet alle verfügbaren Pakete oder alle Pakete aus angegebenen Repositories auf. Ähnlich wie zypper search -s -t package.

und danach gerne mit etwas weitermachen.


Aber ich bin verwirrt, commandes funktioniert nicht mit Pipe.

Richtig, das ist der Fall und das beabsichtigte Verhalten. Siehe im Beispiel


Also bitte gib mir die Lösung dieser Aufgabe

Es wird nicht „die eine Lösung“ geben, aber Sie können einen Blick auf die folgende Liste mit den am meisten bis am wenigsten bevorzugten Ansätzen werfen:

Oder bleiben Sie zumindest shellbei Befehlen mit Pipes (und Ihrem angegebenen Beispiel in seiner aktuellen Form).

verwandte Informationen