Задать вопрос
Labutin
@Labutin
Web-разработчик

Как донакатить 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 просьба не цепляться. Обновлено могло быть совершенно любое ПО или библиотека. Это сути вопроса не меняет.

Кто как решает описанную выше проблему?

Или может быть у меня в целом подход неверный? Если да, то подскажите в какую сторону смотреть?
  • Вопрос задан
  • 825 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@neol
ansible-pull не подойдёт?
Ответ написан
Комментировать
Sanes
@Sanes
Ansible сравнит что уже есть на сервере и если выполнение не требуется задание пропустит. Просто запускаете его повторно.
Ответ написан
opium
@opium
Просто люблю качественно работать
Ну запускаете плейбук по крону. Либо какое то стороннее решение городить с пингом от включенного сервера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы