等待几分钟以检查 URL 是否正在响应

Wait for a couple of minutes to check if an URL is responding

提问人:Ashar 提问时间:5/24/2022 最后编辑:β.εηοιτ.βεAshar 更新时间:6/30/2022 访问量:3801

问:

我使用 Ansible 运行启动脚本,如下所示:

- name: Start service
  raw: "source ~/.profile; ~/start.sh"

现在,我想继续检查我上面启动的服务的 HTTP 状态,直到它成功 — .200

以下是我检查HTTP状态的方法,但是,我不知道如何继续检查2分钟并报告URL是否仍未返回。200200

- name: Detect if HTTp response is '200'
  uri:
    url: 'http://example.org/iportal/'
    return_content: yes
    validate_certs: no
    status_code:
      - 200
  register: uri_output
url ansible 等待 http-response-codes until-loop

评论


答:

12赞 β.εηοιτ.βε 5/24/2022 #1

使用 until 循环:

- name: Wait until HTTP status is 200
  uri:
    url: 'http://example.org/iportal/'
    return_content: yes
    validate_certs: no
    status_code:
      - 200
  until: uri_output.status == 200
  retries: 24 # Retries for 24 * 5 seconds = 120 seconds = 2 minutes
  delay: 5 # Every 5 seconds
  register: uri_output

请注意:在这种情况下,如果您的请求最终超时,您可能会看到不同的时间。模块的默认超时为 30 秒。uri

在这种情况下,您将有 24 次重试 * 5 秒延迟 + 24 次重试 * 30 秒,直到超时,因此,大约 14 分钟。
从那时起,要么调整超时,要么调整重试次数,要么两者兼而有之。