Как предотвратить запуск двух заданий ANSI на одном компьютере?

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

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

Мы просто хотим заверить, что мы не делаем то же самое параллельно.

3 ответа

Вы можете проверить файл и удалить файл на хосте, с которым вы выполняете:

 tasks:    
   - stat: path=.ansible_lock_file
     register: lock_file_check

   - fail: msg="ansible is already being run against this host"
     when: lock_file_check.stat.exists

   - file: path=.ansible_lock_file state=touch`

И удалите его в конце вашей пьесы

   - file: path=.ansible_lock_file state=touch

Хотя это еще не полный ответ, у меня сложилось впечатление, что элегантным решением является написание плагина обратного вызова, который реализует это.

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

https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/callback/osx_say.py

В то время как файл блокировки является техническим решением, я бы вместо этого предложил культурное решение: вокализованную "блокировку развертывания".

Многие команды разработчиков имеют внутренний канал чата, где они координируют релизы; бот отображает состояние всех текущих выпусков, и разработчики упоминают, когда они собираются что-то развернуть. Иногда это немного формализуется: бот также отслеживает, кто имеет блокировку, или даже поддерживает очередь людей в очереди на блокировку.

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

Другие вопросы по тегам