Динамический инвентори

Тема дорожной карты · Ansible

Динамический inventory в Ansible заменяет статические INI- или YAML-файлы inventory скриптами или плагинами inventory, запрашивающими живые источники данных — API облачных провайдеров, CMDB, платформы виртуализации или оркестраторы контейнеров — и возвращающими JSON-структуру хостов и групп во время выполнения. Современный динамический inventory реализуется как плагин inventory (например, amazon.aws.aws_ec2, azure.azcollection.azure_rm или kubernetes.core.k8s), настроенный в YAML-файле с расширением .yml или .yaml и передаваемый Ansible через -i inventory.aws_ec2.yml. Динамический inventory незаменим в облачных средах, где IP-адреса инстансов меняются при каждом цикле подготовки; фильтрация по тегам (например, Environment=production) гарантирует, что inventory всегда отражает именно те хосты, которые должны быть задействованы, без ручных обновлений. Плагины inventory пришли на смену устаревшим исполняемым скриптам inventory, но подход со скриптами (ansible-inventory -i my_script.py --list) по-прежнему поддерживается для пользовательских или устаревших интеграций.

Как это работает

Динамический инвентори перечисляет целевые хосты и их группировки. 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.

Типичные ошибки

Ловушки Динамический инвентори: один огромный hosts.ini на всё (невозможно навигировать после 100 хостов); смешение имён хостов и IP (изменения DNS тихо ломают); коммит inventory с секретами в host_vars/ (vault-шифрованные файлы); ad-hoc команды против all вместо конкретной группы ("ой я запустил shutdown на каждом сервере").

Связанные понятия

Полезные ресурсы