Показать все группы, в которых находится хост, в инвентаре ansible

Показать все группы, в которых находится хост, в инвентаре ansible

У меня есть набор плейбуков ansible (v2.9.11) с примерно 80 серверами, которые выполняют разные вещи. Я пытаюсь структурировать вещи в группы с подгруппами.

Можно ли легко увидеть все группы, в которых состоит хост? Особенно, если он показывает мне иерархию, например, "Хост H₁ находится в группе G₁, которая является дочерней группой группы G₂"

решение1

Специальная переменная group_namesдержит«Список групп, в которых состоит текущий хост». В Ansible нет информации об иерархии групп.

решение2

Основано на вдохновении изhttps://unix.stackexchange.com/a/706901/106012, я придумал следующее решение для вывода списка групп для определенного хоста:

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

Это не учитывает вложенные группы, но работает для плоской структуры групп в моей небольшой установке ansible. Я уверен, что кто-то с лучшими jqнавыками, чем я, мог бы исправить этот недостаток.

Связанный контент