ich es einfach durch Verwendung von Shell-Befehle erhalten können, die nicht
Sie können über idempotence nicht wirklich reden ist idempotent, Wenn Sie Abfrage der aktuelle Zustand einer Maschine sind.
"Idemontent" bedeutet, dass die Aufgabe sicherstellen wird, dass die Maschine im Zustand ist, egal wie oft Sie eine bestimmte Aufgabe ausführen.
Wenn Sie den aktuellen Status abfragen, beschreiben Sie nicht den gewünschten Status. Egal, was Sie tun, welche Methode Sie verwenden, der Begriff "idempotent" ist einfach nicht anwendbar.
In Bezug auf Ihr Beispiel, die Sie nicht Ergebnisse nicht geben - Sie haben list
zweimal das gleiche Argument wiederholt, und die Aufgabe scheitern sollte (dies nicht der Fall, was wie ein ansible Marotte aussieht).
, um eine Liste der installierten Pakete zu bekommen, sollten Sie verwenden:
- name: yum_command
yum:
list=installed
register: yum_packages
- debug:
var: yum_packages
Es spart eine Liste der Wörterbücher jedes Paket auf eine Variable yum_packages
beschreibt.
Sie können dann eine JSON Query Filter verwenden, um ein einzelnes Paket (tar
) zu erhalten:
wie diese
- debug: var=item
with_items: "{{yum_packages|json_query(jsonquery)}}"
vars:
jsonquery: "results[?name=='tar']"
zu erhalten ein Ergebnis:
"item": {
"arch": "x86_64",
"epoch": "2",
"name": "tar",
"nevra": "2:tar-1.26-31.el7.x86_64",
"release": "31.el7",
"repo": "installed",
"version": "1.26",
"yumstate": "installed"
}
oder seine Version nur:
- debug: var=item
with_items: "{{yum_packages|json_query(jsonquery)}}"
vars:
jsonquery: "results[?name=='tar'].version"
"item": "1.26"
Dank @ Techraf. Das sieht gut aus. –