YAML-инвентори

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

YAML-инвентори представляет собой альтернативный формат описания целевых хостов и их группировок, использующий язык описания данных YAML. Этот формат позволяет более гибко и структурировано описывать конфигурацию хостов и групп, что делает его особенно полезным для сложных систем управления конфигурациями. YAML-инвентори обеспечивает удобство использования благодаря своей простоте и гибкости, а также благодаря поддержке вложенных иерархий групп и автоматической загрузке переменных.

YAML-инвентори состоит из ключевого уровня all, который содержит секции hosts, children (подгруппы) и vars. Каждая запись хоста может включать встроенные переменные подключения, такие как ansible_host, ansible_user, и ansible_port. Например, запись webservers: hosts: web1.example.com: ansible_host: 10.0.1.10 под all.children создаёт группу webservers, нацеленную на этот IP. YAML-инвентори обычно хранится в каталоге inventory/, рядом с подкаталогами group_vars/ и host_vars/, и передаётся в playbook через команду ansible-playbook -i inventory/ site.yml.

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

YAML-инвентори перечисляет целевые хосты и их группировки, используя структурированный формат YAML. Этот формат позволяет более гибко и структурировано описывать конфигурацию хостов и групп, что делает его особенно полезным для сложных систем управления конфигурациями. В отличие от традиционного формата INI, YAML поддерживает вложенные иерархии групп, что делает его более удобным для описания сложных структур.

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 используется для десятков хостов, когда структура системы остается стабильной. Динамический inventory, с другой стороны, применяется, когда облако меняет хосты быстрее, чем вы обновляете YAML. Группировка по назначению (webservers, databases, monitoring) и по среде (production, staging) позволяет эффективно управлять хостами в различных средах. Хосты могут быть одновременно в нескольких группах. Env-специфичный конфиг — в group_vars/<env>.yml. Sensitive group_vars — Ansible Vault.

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

Типичные ошибки при работе с YAML-инвентори включают создание одного огромного hosts.ini файла для всего инвентаря, что делает его сложным для навигации после того, как в него добавлено более 100 хостов. Также распространена ошибка смешивания имён хостов и IP, что может привести к проблемам при изменении DNS. Коммит инвентаря с секретами в host_vars/ также является распространенной ошибкой, так как это может привести к утечке конфиденциальной информации. Использование ad-hoc команд против all вместо конкретной группы может привести к нежелательным последствиям, таким как случайное отключение всех серверов.

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

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