host_vars

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

host_vars — это соглашение Ansible по каталогам для определения переменных, применяемых к одному конкретному хосту, обеспечивающее конфигурацию уровня хоста, которая переопределяет любые совпадающие значения из group_vars в соответствии с правилами приоритета переменных Ansible. Файлы переменных размещаются по пути host_vars/<hostname>.yml или в каталоге host_vars/<hostname>/, содержащем несколько YAML-файлов, где <hostname> точно совпадает с inventory_hostname, как оно указано в inventory. Типичное содержимое host_vars включает параметры подключения, специфичные для хоста (ansible_host, ansible_port, ansible_user), уникальные настройки приложения (нестандартные порты, имена баз данных, специфичные для инстанса) или значения аппаратной настройки, отличающиеся у хостов одной группы. Хотя host_vars необходимы для представления реальных различий уровня хоста, чрезмерное их использование — признак проблем: если у многих хостов есть уникальные файлы переменных, это часто указывает на необходимость пересмотра стратегии группировки inventory.

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

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

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

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

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

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