INI-инвентори
Тема дорожной карты · Ansible
Формат INI inventory — это исходный синтаксис inventory Ansible, использующий текстовый файл в стиле INI для перечисления хостов, определения групп с заголовками секций [groupname] и задания переменных хоста в виде пар key=value в той же строке, что и имя хоста. Группы могут содержать другие группы с помощью синтаксиса [groupname:children], а переменные уровня группы задаются в секции [groupname:vars], хотя хранение переменных в файлах каталога group_vars/ является предпочтительной лучшей практикой. Формат INI inventory поддерживает параметры подключения как встроенные переменные хоста — web01 ansible_host=192.168.1.10 ansible_user=ubuntu ansible_port=2222 полностью задаёт способ подключения к хосту web01. Для небольших или статических сред формат INI inventory остаётся допустимым и читаемым вариантом; для сложных сред с большим количеством переменных или динамическими списками хостов более удобны в сопровождении формат YAML inventory или плагины динамического inventory.
Как это работает
INI-инвентори перечисляет целевые хосты и их группировки. INI-формат ([webservers]\nweb1.example.com) или YAML (предпочтительно для сложных структур, group_vars, host_vars). Dynamic inventory-плагины запрашивают AWS, GCP, Azure, Yandex Cloud, Kubernetes для живых списков хостов. Переменные — в group_vars/<group>.yml и host_vars/<host>.yml директориях, auto-loaded ansible-ом. Группы вложаемы; хосты в нескольких группах одновременно.
Когда применять
Статичный YAML inventory — для десятков хостов; динамический — когда облако меняет хосты быстрее, чем вы обновляете YAML. Группируйте по назначению (webservers, databases, monitoring) и по среде (production, staging) — хосты могут быть в обоих. Env-специфичный конфиг — в group_vars/<env>.yml. Sensitive group_vars — Ansible Vault.
Типичные ошибки
Ловушки INI-инвентори: один огромный hosts.ini на всё (невозможно навигировать после 100 хостов); смешение имён хостов и IP (изменения DNS тихо ломают); коммит inventory с секретами в host_vars/ (vault-шифрованные файлы); ad-hoc команды против all вместо конкретной группы ("ой я запустил shutdown на каждом сервере").