Ansible滚动升级 - 如何使用超时测试服务器响应?

时间:2016-11-23 04:31:19

标签: ansible ansible-playbook devops

我有2台托管网站的服务器。 我想用Ansible进行滚动升级,如下所示:

  1. 一次升级一台服务器

  2. 将建筑节点从负载均衡器上取下

  3. 运行任务,重启服务器

  4. 等待服务器启动,每隔5秒向测试URL发送一个请求,直到收到有效的响应,3分钟后它将超时,并且ansible playbook失败。

  5. 如果构建成功,请构建下一个节点,直到所有构建完成。

  6. 在上面,默认情况下可以使用Ansible完成1,2,3,5。但我找不到任何关于如何在不编写自定义脚本的情况下使用Ansible实现第4步的文档。

    任何指针都将受到赞赏。

    更新

    我终于使用了wait_foruntil

     - 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
    

2 个答案:

答案 0 :(得分:0)

您正在寻找wait_for模块:

- wait_for:
    host: path.to.the.node
    port: 80
    connect_timeout: 5
    timeout: 180

答案 1 :(得分:0)

使用uri

ping页面

那里有一个超时参数。

示例:

- name: wait for nginx
  wait_for:
    port: 443

- name: wait for test page
  uri:
    url: https://test/page
    timeout: '{{ 3 * 60 }}'