Инвентаризация#
Терминология:
Инвентарь – совокупность управляемых узлов (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.