Ansible uri模块中的多个status_code

时间:2017-01-05 10:13:36

标签: ansible uri

我正在使用ansible uri模块发出POST请求。请求返回201或208的状态,并且应该考虑两个状态代码以使任务通过。如何指定多个status_code值或如何实现此目的?

  - uri:
      url: "http://mywebsite.org/api/hooks/release/builtin/"
      method: POST
      HEADER_Content-Type: "application/json"
      body: '{"version": "6.2.10"}'
      body_format: json
      status_code: 208
    register: result
    failed_when: status_code != 201 or status_code != 208

3 个答案:

答案 0 :(得分:6)

uri module manual

  

status_code一个有效的数字HTTP状态代码,表示请求成功。 也可以是逗号分隔的状态代码列表

所以:

- uri:
    url: "http://mywebsite.org/api/hooks/release/builtin/"
    method: POST
    HEADER_Content-Type: "application/json"
    body: '{"version": "6.2.10"}'
    body_format: json
    status_code: 201, 208
  register: result

答案 1 :(得分:0)

使用failed_when

的解决方案

failed_when需要使用not inresult.status来正确评估此内容:

failed_when: result.status not in [201,208]

问题中的代码问题 第一个问题是status_code不能像这样被引用。但是,您可以使用已注册的status对象引用result。那么failed_when状态将如下所示: failed_when: result.status != 201 or result.status != 208

但是,当201208返回时,如果status208则不等于201和{{} 1}}条件失败(反之亦然)。

答案 2 :(得分:0)

值得注意的是,您还可以使用更传统的ansible列表格式(每行一项)提供状态代码:

- uri:
  url: "http://mywebsite.org/api/hooks/release/builtin/"
  method: POST
  HEADER_Content-Type: "application/json"
  body: '{"version": "6.2.10"}'
  body_format: json
  status_code:
    - 201
    - 208
    - 409
register: result