Как донакатить 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
272 +1
0
Ответы
1

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

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

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

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

20 Апр 2024 в 13:12
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир