Ответ
Статический инвентарь в Ansible — это файл (обычно в формате INI или YAML), в котором вручную и явно перечислены все управляемые хосты, сгруппированные по логическим категориям. Это самый простой и прямой способ определения целевых машин для Ansible.
Пример в формате INI (inventory.ini):
# Группа веб-серверов
[webservers]
web-01.example.com ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/web_key
web-02.example.com ansible_user=deploy
# Группа баз данных с переменной порта
[dbservers]
db-primary.example.com ansible_port=5432
# Группа, объединяющая другие группы (children)
[production:children]
webservers
dbservers
# Глобальные переменные для всех хостов
[all:vars]
ansible_python_interpreter=/usr/bin/python3
timezone=Europe/Moscow
Пример в формате YAML (inventory.yml):
all:
hosts:
web-01.example.com:
ansible_user: ubuntu
web-02.example.com:
ansible_user: deploy
children:
webservers:
hosts:
web-01.example.com:
web-02.example.com:
dbservers:
hosts:
db-primary.example.com:
ansible_port: 5432
production:
children:
webservers:
dbservers:
vars:
ansible_python_interpreter: /usr/bin/python3
timezone: Europe/Moscow
Преимущества статического инвентаря:
- Простота и прозрачность: Файл легко читать, редактировать и хранить в системе контроля версий (Git).
- Полный контроль: Все хосты и переменные заданы явно.
- Стабильность: Идеально подходит для инфраструктуры с фиксированным, редко меняющимся набором серверов (например, выделенные сервера, долгоживущие виртуальные машины).
Недостатки:
- Ручное управление: Требует обновления вручную при добавлении или удалении хостов, что подвержено ошибкам.
- Не подходит для динамических сред: Неэффективен в облачных средах с автоматическим масштабированием, где набор инстансов постоянно меняется.
Использование: Указать инвентарь можно через флаг -i или в конфигурационном файле ansible.cfg.
ansible-playbook -i inventory.ini site.yml
Для динамических сред используется динамический инвентарь — скрипт или плагин (для AWS EC2, Google Cloud, OpenStack и др.), который генерирует список хостов на лету, запрашивая его у провайдера.