Инвентаризация

Инвентаризация#

Терминология:

  • Инвентарь – совокупность управляемых узлов (managed nodes).

  • Описание инвентаря (inventory) или инвентарный список – файлы или другие источники данных, определяющие перечень и параметры узлов, управляемых через наборы сценариев (playbooks) или отдельные задачи.

  • Инвентаризация – процесс создания описания инвентаря.

Описание инвентаря#

Описание инвентаря может быть создано следующими способами:

  • статическая инвентаризация – создание и хранение описания инвентаря в файлах;

  • динамическая инвентаризация – создание описания инвентаря в момент запуска Ansible на основе внешних источников данных.

Независимо от способа, перед выполнением требуемых сценариев автоматизации Ansible обрабатывает и объединяет все исходные источники, формируя итоговое описание инвентаря, используемое далее в этих сценариях. При запуске утилиты ansible-playbook можно задавать несколько источников, используя как статическую, так и динамическую инвентаризацию:

ansible-playbook -i <inventory-1> -i <inventory-2> ... <playbook>.yml

Ключевые правила:

  • Каждый источник представляется значением аргумента -i.

  • При возникновении конфликта между источниками последний из этих источников имеет более высокий приоритет.

Расширения из Ansible Core#

Для инвентаризации Ansible использует (загружает) следующие расширения из коллекции ansible.builtin:

  • ansible.builtin.host_list разбирает строку с перечнем узлов, разделенных запятыми.

  • ansible.builtin.advanced_host_list разбирает строку с перечнем узлов, разделенных запятыми, и поддерживает диапазоны названий.

  • ansible.builtin.ini использует файлы формата INI как источники описания инвентаря.

  • ansible.builtin.yaml использует файлы формата YAML как источники описания инвентаря.

  • ansible.builtin.toml использует файлы формата TOML как источники описания инвентаря.

  • ansible.builtin.script выполняет внешний скрипт, возвращающий описание инвентаря в формате JSON.

  • ansible.builtin.constructed формирует группы и переменные на основе шаблонов Jinja2.

  • ansible.builtin.generator создает группы и узлы по шаблонам.

  • ansible.builtin.auto автоматически определяет нужное расширение Ansible по ключу plugin в файлах YAML и загружает его.

По умолчанию включены только расширения host_list, script, auto, yaml, ini и toml (параметр INVENTORY_ENABLED). Расширения constructed и generator загружаются расширением auto по ключу plugin либо после включения в параметре enable_plugins файла ansible.cfg.