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 — это скелет инфраструктуры. Если он кривой, вся автоматизация хромает.
📬 Зв'яжіться з нами
Бажаєте впровадити це у своєму бізнесі? Пишіть нам!
- 📧 Email: [email protected]
- 🌐 Сайт: 1it.pro
- 📝 Блог: blog.1it.pro