Что выполняет команда `ansible-inventory`?

«Что выполняет команда `ansible-inventory`?» — вопрос из категории Ansible, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Команда ansible-inventory — это утилита командной строки для отображения и анализа инвентаря Ansible. Я часто использую её для отладки, проверки группировки хостов и переменных перед запуском плейбуков.

Основные варианты использования и примеры:

  1. Просмотр всего инвентаря в структурированном виде (JSON):

    ansible-inventory -i production.ini --list

    Это помогает увидеть итоговую структуру после применения всех group_vars, host_vars и динамических источников.

  2. Визуализация иерархии групп в виде графа:

    ansible-inventory -i inventory/ --graph

    Вывод:

    @all:
      |--@ungrouped:
      |--@webservers:
      |  |--web01
      |  |--web02
      |--@dbservers:
      |  |--db01
  3. Проверка переменных для конкретного хоста:

    ansible-inventory -i hosts.yml --host web01.example.com

    Показывает все переменные (включая унаследованные от групп), которые будут доступны для этого хоста при выполнении плейбука.

  4. Экспорт в YAML или использование с jq для фильтрации:

    ansible-inventory --list --output inventory.yaml
    ansible-inventory --list | jq '.all.children'

Ключевая польза для DevOps: Эта команда незаменима для валидации сложных динамических инвентарей (генерируемых скриптами на Python или из облачных источников, like AWS EC2), позволяя убедиться, что хосты правильно сгруппированы и им назначены корректные переменные.