我有2台托管网站的服务器。 我想用Ansible进行滚动升级,如下所示:
一次升级一台服务器
将建筑节点从负载均衡器上取下
运行任务,重启服务器
等待服务器启动,每隔5秒向测试URL发送一个请求,直到收到有效的响应,3分钟后它将超时,并且ansible playbook失败。
如果构建成功,请构建下一个节点,直到所有构建完成。
在上面,默认情况下可以使用Ansible完成1,2,3,5。但我找不到任何关于如何在不编写自定义脚本的情况下使用Ansible实现第4步的文档。
任何指针都将受到赞赏。
更新
我终于使用了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