2 min read

Tags и --limit в Ansible: как перестать ждать и запускать только нужное

Tags и --limit в Ansible: как перестать ждать и запускать только нужное

В пятницу вечером нужно было срочно поправить конфиг на одном из 50 продакшен-серверов. Я запустил плейбук. И понял, что следующие 20 минут буду просто сидеть и смотреть, как Ansible перебирает все роли, хотя менять надо было всего одну строчку.

Предыстория

У меня пара десятков плейбуков. Некоторые раскиданы на 200-300 строк. Когда ты дергаешь их целиком, даже простой рестарт nginx превращается в многосерийный сериал. Раньше я просто терпел: запустил — пошёл пить кофе.

Но однажды прилетела задача: на одном инстансе сменить DNS, а на соседнем — не трогать. Я вспомнил, что в документации видел параметры, и решил разобраться.

Проблема

Боль — когда нужно сделать одно маленькое изменение, а Ansible честно прогоняет проверку прав, установку зависимостей, перезагрузку сервисов и синтаксис. Это не просто медленно. Это ломает ритм работы.

Ты ждёшь, отвлекаешься, забываешь, что именно правил. А если плейбук упал на середине из-за неважной ошибки в другом таске — тратишь время на расследование.

Лучше запустить один таск за 5 секунд, чем весь плейбук за 15 минут и получить проблему на ровном месте.

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

Для DevOps это вопрос денег. Большие плейбуки жрут процессор, сеть и время, когда сервер под полной нагрузкой. Каждая секунда простоя или ожидания — это потеря для бизнеса.

Когда нужно быстро подкрутить переменные в окружении или перечитать конфиг, ты не можешь позволить себе ждать. Срочные правки должны быть срочными.

Решение

В Ansible есть два мощных инструмента: tags и --limit. Я начал добавлять теги к каждому таску и роли: config, restart, debug, security. Это заняло один вечер переписывания плейбука.

А потом я просто начал запускать:

  • 💡 ansible-playbook site.yml --tags config — только конфигурационные файлы
  • 🚀 ansible-playbook site.yml --limit web-3 — только один сервер
  • 🔧 ansible-playbook site.yml --tags restart --limit web-5 — сброс сервиса на конкретной машине

Теги работают как ярлыки: ты выбираешь только те таски, которые нужны сейчас. --limit сужает хосты. Всё остальное Ansible пропускает.

Результат

Я перестал ждать. Теперь любая точечная правка занимает 5-10 секунд вместо 20 минут. Плейбуки стали короче, читаемее. Я точно знаю, какой таск что делает.

И главное — срочные фиксы перестали быть стрессом. Я просто запускаю нужный тег на нужном хосте и получаю результат. Без лишних телодвижений.


📬 Свяжитесь с нами

Хотите внедрить это в своем бизнесе? Пишите нам!

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