Alle Gruppen anzeigen, in denen sich ein Host in einem Ansible-Inventar befindet

Alle Gruppen anzeigen, in denen sich ein Host in einem Ansible-Inventar befindet

Ich habe einen Ansible-Playbook-Satz (v2.9.11) mit etwa 80 Servern, die verschiedene Dinge tun. Ich versuche, die Dinge in Gruppen mit Untergruppen zu strukturieren.

Ist es möglich, alle Gruppen, denen ein Host angehört, einfach anzuzeigen? Insbesondere, wenn mir die Hierarchie angezeigt wird, wie in „Host H₁ ist in Gruppe G₁, die eine untergeordnete Gruppe der Gruppe G₂ ist“

Antwort1

Spezielle Variable group_nameshält„Liste der Gruppen, zu denen der aktuelle Host gehört“. In Ansible sind keine Informationen zur Gruppenhierarchie verfügbar.

Antwort2

Basierend auf Inspiration vonhttps://unix.stackexchange.com/a/706901/106012habe ich diese Lösung gefunden, um die Gruppen für einen bestimmten Host aufzulisten:

ansible-inventory --list | jq -r 'map_values(select(.hosts != null and (.hosts | contains(["myhost"])))) | keys[]'

Dies berücksichtigt keine verschachtelten Gruppen, funktioniert aber für die flache Gruppenstruktur in meiner kleinen Ansible-Installation. Ich bin sicher, dass jemand mit besseren jqFähigkeiten als ich diesen Mangel beheben könnte.

verwandte Informationen