如何检查Ansible中的特定状态代码(4xx)?

如何检查Ansible中的特定状态代码(4xx)?,ansible,Ansible,我想要的是:停止程序,直到出现状态代码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: "{

我想要的是:停止程序,直到出现状态代码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不同。请查看文档中的,您将看到有一个属性可用于指定一个或多个被视为“成功”的状态代码。例如(假设您希望收到
200
412
响应):

您现在遇到的问题是412状态代码被视为故障

您还可以在任务上设置
ignore\u errors:true
,但使用
status\u code
属性可能更好,因为它仍然允许任务在收到意外状态代码时失败


NB:文档中说,“也可以是一个逗号分隔的状态代码列表”,但源代码看起来需要一个实际的YAML列表。因此,您可能需要根据实际工作的值调整该值。

查看文档中的,您将看到有一个
状态\u code
属性,可用于指定一个或多个被视为“成功”的状态代码。例如(假设您希望收到
200
412
响应):

您现在遇到的问题是412状态代码被视为故障

您还可以在任务上设置
ignore\u errors:true
,但使用
status\u code
属性可能更好,因为它仍然允许任务在收到意外状态代码时失败

NB:文档中说,“也可以是一个逗号分隔的状态代码列表”,但源代码看起来需要一个实际的YAML列表。因此,您可能需要根据实际工作的值调整该值

- 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