Ansible Ad-hoc-Befehlsfilter JSON-Ausgabe nach Schlüssel oder Eigenschaft
Ich möchte die JSON-Ausgabe von Ad-hoc-Befehlen filtern - z. nimm die lange Liste von "Fakte "für mehrere Hosts, und zeigen Sie nur einen Host an, der mehrere Ebenen tief sein kann, z. B.ansible_lsb.description
, damit ich schnell vergleichen kann, welche Softwareversionen ausgeführt werden, genaue Zeiten oder Zeitzonen überprüfen kann.
Das funktioniert
ansible myserver -m setup -a 'filter=ansible_lsb'
myserver | SUCCESS => {
"ansible_facts": {
"ansible_lsb": {
"codename": "wheezy",
"description": "Debian GNU/Linux 7.11 (wheezy)",
"id": "Debian",
"major_release": "7",
"release": "7.11"
}
},
"changed": false
}
Wie auch immer, alssetup module docs state, "die Filteroption filtert nur den Unterschlüssel der ersten Ebene unter ansible_facts", dies schlägt also fehl:
ansible myserver -m setup -a 'filter=ansible_lsb.description'
myserver | SUCCESS => {
"ansible_facts": {},
"changed": false
}
(zur Referenz können Sie die Punktnotation auch an anderen Stellen verwenden, z. B. bei @ einer Aufgabewenn bedingt)
Gibt es eine Möglichkeit, die JSON-Schlüssel zu filtern, bevor die Ausgabe angezeigt wird?