2 min read

Inventory в Ansible: как не утонуть в хостах и группах

Inventory в Ansible: как не утонуть в хостах и группах

Сижу как-то ночью с лэптопом, смотрю на список из 200 серверов в одном плоском inventory. Все хосты в одной куче. Никакой логики. Только имена вида server1, server2, prod-db-3. Найти нужный — как иголку в стоге сена.

Предыстория

Был у меня проект: миграция инфраструктуры на Ansible. Заказчик сказал: "У нас всё просто, всего 50 машин". Через месяц их стало 120. Ещё через два — 300. Я открываю inventory файл и понимаю: это не управляемая инфраструктура. Это зоопарк.

Попытки применить плейбуки к конкретной группе превращались в русскую рулетку. Потому что группы были перемешаны, переменные торчали где попало, а имена хостов не отражали ни роль, ни окружение.

Проблема

Всё шло не так. Ошибки размножались. Один неверный тег — и плейбук летит на прод вместо стейджинга. Я тратил часы на отладку, хотя патч занимал пять минут. Группы дублировались, переменные переопределялись в трёх местах, а имена хостов были как случайный набор букв.

Почему это важно

Для бизнеса это означало одно: время простоя. Каждый раз, когда я путал сервер, падала продакшн-среда. Клиенты теряли деньги, а я — сон. Если inventory не структурирован, автоматизация превращается в ручной труд. А это убивает саму идею DevOps.

Плохой inventory стоит дороже, чем отсутствие автоматизации вовсе.

Решение

Я переписал всё с нуля. Взял за основу логику: группа = роль + окружение. Например, все базы данных — в группу db. Все продакшн-серверы — в prod. Переменные вынес в отдельные файлы group_vars. Имена хостов привёл к шаблону: роль-окружение-номер.

  • 🧩 Разделил inventory на прод, стейджинг и дев.
  • 📂 Переменные положил в папки group_vars/ и host_vars/.
  • 🔤 Имена хостов теперь строгие: app-prod-01, db-stage-02.
  • ♻️ Использую nested groups для наследования переменных.

Главное — я добавил файл all.yml с базовыми переменными. Они применяются ко всем хостам. А специфику — только в нужной группе. Так пути переопределения стали прозрачными.

Результат

Теперь я запускаю плейбук и точно знаю, куда он попадёт. Время на поиск хоста сократилось с 10 минут до 10 секунд. Ошибки с путаницей окружений ушли. Бизнес перестал вздрагивать при каждом деплое. А я наконец-то перестал просыпаться в три ночи от мыслей "а не туда ли я нажал"? Inventory — это скелет инфраструктуры. Если он кривой, вся автоматизация хромает.


📬 Зв'яжіться з нами

Бажаєте впровадити це у своєму бізнесі? Пишіть нам!

Связаться с нами
Telegram
WhatsApp
Email