Inventory
Тема дорожной карты · Ansible
Inventory в Ansible представляет собой набор хостов и их атрибутов, используемых для управления и автоматизации IT-инфраструктуры. Это важный элемент, так как он предоставляет структурированный способ организации и управления конфигурацией систем, что упрощает применение единообразных конфигураций на нескольких машинах. Определив inventory, можно использовать Ansible для автоматизации задач, таких как развёртывание приложений, настройка сетевых параметров и управление облачными ресурсами.
Как это работает
Inventory перечисляет целевые хосты и их группировки. В Ansible используются два основных формата инвентаря: 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, автоматически загружаемых Ansible. Группы могут быть вложенными, и хосты могут находиться в нескольких группах одновременно.
Когда применять
Статичный YAML inventory используется для управления десятками хостов. В то же время, динамический инвентарь полезен, когда облако меняет хосты быстрее, чем вы обновляете YAML-файлы. Группировка хостов по назначению (webservers, databases, monitoring) и по среде (production, staging) позволяет эффективно управлять разными типами серверов и средами. Хосты могут быть одновременно частью нескольких групп. Для средо-специфичных конфигураций используются файлы group_vars/<env>.yml. Сensitive group_vars следует зашифровать с помощью Ansible Vault, чтобы обеспечить безопасность конфигураций.
Типичные ошибки
Типичные ошибки при работе с inventory включают использование одного огромного файла hosts.ini для всех хостов (невозможно навигировать после crawl-100 хостов), смешивание имён хостов и IP (изменения DNS могут тихо ломать конфигурацию), коммит инвентаря с секретами в host_vars/ (что требует использования Ansible Vault для шифрования этих файлов), а также использование ad-hoc команд против группы all вместо конкретной группы (что может привести к нежелательным последствиям, например, запуск команды shutdown на всех серверах).