У меня есть 2 сервера, на которых размещен веб-сайт. я хочу сделать чередующееся обновление с анзиблем вроде следующий:Модифицированное обновление прокатки - как проверить ответ сервера с таймаутом?
обновления одного сервера в то время
взять узел здания от балансировки нагрузки
выполнения задания, перезапуск сервер
Ожидание запуска сервера, отправка запроса на тестовый URL каждые 5 секунд, пока не будет получен действительный ответ, он будет истекать через 3 минуты, проигрыватель не работает.
Если сборка прошла успешно, постройте следующий узел до тех пор, пока все не закончится.
Из вышеизложенного 1,2,3,5 могут быть выполнены с помощью Ansible по умолчанию. Но я не могу найти документацию о том, как выполнить шаг 4 с Ansible без написания собственного скрипта.
Любой указатель будет оценен по достоинству.
UPDATE
я, наконец, получил это работает с wait_for
и until
:
- name: "wait for port to be available"
wait_for:
host: "127.0.0.1"
port: "{{port}}"
timeout: 30
- name: "wait for web app to start up"
shell: curl -XGET --head --silent http://127.0.0.1:{{port}}/test
register: result
until: result.stdout.find("200 OK") != -1
retries: 60
delay: 3
спасибо за ответ, wait_for ждет только порт будет доступен, но не гарантирует сайт возвращает ответ 200. Когда веб-сайт запускается, порт обычно уже доступен, но запросы на возврат веб-сайта 503 – Jay
Вы можете добавить параметр 'search_regex' и проверить ожидаемый ответ. – techraf