我想要的是:停止程序,直到出现状态代码412,然后继续。
我有以下代码来检查状态代码412:
- name: Check if plan was applied
uri:
url: "https://website.some.url.com/api/v1/clusters/elasticsearch/{{elasticClusterDetails.elastic$
method: GET
user: admin
password: "{{rootpw.stdout}}"
force_basic_auth: yes
validate_certs: no
register: result
until: result.status == 412
retries: 20
delay: 30
重试几次后我得到
错误:[...]状态为412而不是200
因此412实际上出现了,但未被识别为满足“直到”条件,程序退出。 据我了解,当代码从200切换到412时,无法发出请求。 我需要更改什么才能在代码412上不出现错误?
请注意:这不能重复,因为检查4xx状态代码与检查2xx状态代码不同
答案 0 :(得分:1)
看看uri module的文档,您会发现有一个status_code
属性可用于指定一个或多个被视为“成功”的状态代码。类似于(假设您希望收到200
或412
响应):
- name: Check if plan was applied
uri:
url: "https://website.some.url.com/api/v1/clusters/elasticsearch/{{elasticClusterDetails.elastic$
method: GET
user: admin
password: "{{rootpw.stdout}}"
force_basic_auth: yes
validate_certs: no
status_code: [200,412]
register: result
until: result.status == 412
retries: 20
delay: 30
您现在遇到的问题是412状态代码被视为失败。
您还可以在任务上设置ignore_errors: true
,但是使用status_code
属性可能更好,因为如果您收到意外的状态代码,它仍然会使任务失败。
注意事项:文档说,“也可以是逗号分隔的状态代码列表”,但源看起来像是期望的实际YAML列表。因此,您可能需要根据实际使用的值来调整值。