Как донакатить ansible-playbook на сервер, который был выключен? Представим такой сценарий.
У нас 1000 серверов. На всех нужно обновить версию Nginx (допустим security bugfix).
Но у нас один из серверов сейчас выключен, т.к. у него сгорел блок питания.
Обновляем версию nginx в ansible playbook и запускаем его на всех серверах. Да, мы предварительно все оттестировали на тестовом окружении.
Соответственно nginx обновится на 999 серверах, а на одном нет (он выключен).
Блок питания починили, сервер включается и, ВОТ ТУТ ВАЖНО, на нем старый необновленный nginx.
Это хорошо, что я помню, что на нем не обновлен nginx. Я после включения могу снова проиграть playbook. НО это же делается руками. А что если у меня из 1000 было выключено 10 и они включаеются в разное время разными сотрудниками?
Я хочу автоматику!
Суть вопроса вот в чем: как при старте сервера автоматически проиграть на нем последний актуальный playbook и только после этого уже пустить его в строй?
Например, у нас в ha-proxy настроен healt check и если нода недоступна, то запросы на нее не шлются.
А если доступна, то запросы на нее идут. В примере выше с точки зрения ha-proxy ожившая нода вполне в порядке. На запросы отвечает штатно. Только вот версия nginx там дырявый.
К nginx просьба не цепляться. Обновлено могло быть совершенно любое ПО или библиотека. Это сути вопроса не меняет.
Кто как решает описанную выше проблему?
Или может быть у меня в целом подход неверный? Если да, то подскажите в какую сторону смотреть?

21 Авг 2019 в 06:53
244 +1
0
Ответы
1

Для решения описанной проблемы рекомендуется использовать так называемый "push" режим управления серверами Ansible. В этом режиме агент Ansible устанавливается на серверы, которые нужно управлять, и он самостоятельно опрашивает сервер Ansible для получения инструкций.

Таким образом, когда сервер, который был выключен, включается, агент Ansible на нем автоматически обратится к серверу Ansible для получения последнего актуального playbook и выполнит его. Это позволит автоматизировать процесс обновления на выключенных серверах без необходимости ручного запуска playbook.

Для этого необходимо настроить push-управление в Ansible, установить агенты Ansible на сервера и настроить их взаимодействие с сервером Ansible. Таким образом, при включении ранее выключенных серверов, они автоматически получат необходимые обновления и будут готовы к работе.

Такой подход позволит автоматизировать процесс обновления серверов и обеспечить их актуальность даже при выключенном состоянии.

20 Апр в 13:12
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир