ubuntuusers.de

Server und Distribution aus Ansible-Ausgabe ermitteln

Status: Ungelöst | Ubuntu-Version: Server 20.04 (Focal Fossa)
Antworten |

wenze

Avatar von wenze

Anmeldungsdatum:
9. August 2006

Beiträge: 161

Wohnort: vergessen

Hallo,

wie kann ich aus einer Ansible-Abfrage (ansible all -m setup -a "filter=ansible_distribution_release") in einer Zeile den Server und das Release herrausfiltern?

otto.fritz.box focal

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
otto.fritz.box | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution_release": "focal"
    },
    "changed": false
}
wilhelm.friz.box | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution_release": "focal"
    },
    "changed": false
}

wenze

(Themenstarter)
Avatar von wenze

Anmeldungsdatum:
9. August 2006

Beiträge: 161

Wohnort: vergessen

So, ich habe da schon mal was selbst hin bekommen.

1
sed -e ':a;N;$!ba;s/{\n//g'| grep SUCCESS | sed -e 's/[|=>:"]//g'|awk '{ print $1 " " $5; }'

Wie kann ich awk am Ende etwas eleganter gestalten, dass ich "schöne Spalten" in der Ausgabe habe, falls die Hostnamen unterschiedlich lang sind.

Danke

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

Eine Idee wäre das json-Ausgabemodul zu nutzen und jq auf die Ausgabe loszulassen - also z.B.:

export ANSIBLE_LOAD_CALLBACK_PLUGINS=1
export ANSIBLE_STDOUT_CALLBACK=json
ansible all -m setup |
  jq -r '.plays[0].tasks[0].hosts | keys[] as $k | "\($k);\(.[$k] | .ansible_facts.ansible_distribution_release)"' 

wenze

(Themenstarter)
Avatar von wenze

Anmeldungsdatum:
9. August 2006

Beiträge: 161

Wohnort: vergessen

Danke, das kannte ich noch nicht und werde ich mir gleich näher ansehen.

Schönes WE

Antworten |