Как я перестал править 50 конфигов вручную и начал использовать Jinja2 в Ansible
Я сидел и правил третий конфиг для прода. Потом для стейджинга. Потом заметил, что девелоперский упал — забыл поменять порт.
Это был не первый раз. Каждый новый сервер означал копипасту и замену десятка строк. Через месяц я уже путался, где какая версия.
Как это было
Мы запускали микросервис. Три окружения. На каждом свой IP, порт базы, уровень логирования. Я хранил три копии nginx.conf и правил их руками.
Один раз забыл поправить таймаут для прода. Сервер лёг на час. Клиенты звонили, менеджер бегал.
Где болит
Ручное управление конфигами — это не просто скучно. Это опасно. Ошибка в одной строке может положить продакшн. Ищи потом, где ты забыл заменить хост.
Когда окружений 10+, копипаста убивает время. Каждый новый сервис — 30 минут на адаптацию. И это не считая тестов.
Один шаблон, который подставляет правильные переменные под каждое окружение, — это не удобство. Это вопрос надёжности.
Что я сделал
Взял Jinja2 и Ansible. Написал один шаблон nginx.conf.j2 с переменными: server_name, proxy_pass, log_level.
В Ansible подставил переменные через group_vars. Для каждого окружения — свой файл. Шаблон один. А конфигов — сколько нужно.
Как это работает
- 📄 Создаёте шаблон:
server {{ server_name }}; proxy_pass {{ backend_url }}; - ⚙️ Описываете переменные в group_vars/prod.yml, group_vars/staging.yml
- 🔄 Запускаете playbook — Ansible сам собирает конфиг под нужное окружение
Добавил условия: if env == ''prod'' — включаю gzip и кэш. Для девелопера этого не нужно.
Решил проблему с портами за одну итерацию. Больше не скроллю 50 строк в поиске того самого таймаута.
Что изменилось
Время на развёртывание нового сервиса сократилось с 30 минут до 2. Ошибки, связанные с конфигами, ушли. Команда теперь не боится менять параметры — просто правит YAML.
Шаблон стал единственным источником правды. Если нужно поменять формат логов — меняю в одном месте. Все окружения подтягивают обновление при следующем запуске.
📬 Зв'яжіться з нами
Бажаєте впровадити це у своєму бізнесі? Пишіть нам!
- 📧 Email: [email protected]
- 🌐 Сайт: 1it.pro
- 📝 Блог: blog.1it.pro