【问题标题】:Multiple status_code in Ansible uri moduleAnsible uri 模块中的多个 status_code
【发布时间】:2017-01-05 10:13:36
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: ansible uri


    【解决方案1】:

    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
    

    【讨论】:

    • 试过这样做,但它说 status_code 未定义
    • 你应该完全摆脱那条线。这就是为什么在 StackOverflow 上询问时,您应该包含一个可验证的示例以及您得到的错误。
    • 我认为是 failed_when 失败了,但是是的,@drishtiahuja 需要更好地传达问题。
    【解决方案2】:

    值得注意的是,您还可以以更传统的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
    

    【讨论】:

      【解决方案3】:

      使用 failed_when 的解决方案

      failed_when 需要使用 not inresult.status 来正确评估,如下所示:

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

      问题中的代码有问题 第一个问题是不能像这样引用status_code。但是,您可以使用注册的result 对象引用status。那么failed_when 语句看起来像: failed_when: result.status != 201 or result.status != 208

      但是,当 201208 返回时,这仍然会失败,因为如果 status208 那么它不等于 201 并且 result.status != 201 条件失败(反之亦然)。

      【讨论】:

      • “status_code 是 uri 模块的无效属性”——这是怎么回事?
      • @KonstantinSuvorov 感谢我做了一个最小、完整和可验证的示例,我意识到我将状态代码属性应用于task 级别,而不是作为uri 模块属性的一部分.我已经从我的回答中删除了这个不正确的信息。
      • 这里重要的一点是 uri 模块中的status_code 是一个列表。您还需要检查 when 条件中的列表。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多