Ansible - 在不知道 object/key 名称的情况下嵌套循环对象

Ansible - nested loop over object without knowing object/key name

我正在编写一个 ansible 剧本,我需要从 JSON API 结果中获取一个值。 我想在不知道前一个对象 (sd#eureka...) 的情况下获取键“1h”的值,并且我需要遍历所有结果和所有存储桶。

{
  "etat_ms_rep": {
    "results": [
      {
          "buckets": {
            "sd#eureka#pixidanalyticsbackend#c3fb422bb36882d9f502092fd75fcb34": {
              "1h": -1,
              "1m": -1
            },
            "sd#eureka#pixidanalyticsbackend#348fdab155904e22ca0c744d0c052cf8": {
              "1h": 100,
              "1m": 100
            }
          }
      },
      {
          "buckets": {
            "sd#eureka#pixidorchestratorbackend#8fa3441c6c5caa2d5f0e3264a00be91b": {
              "1h": 100,
              "1m": 100
            },
            "sd#eureka#pixidorchestratorbackend#6dc48be83cb86ae1a73b344e9421ed8e": {
              "1h": 100,
              "1m": 100
            }
          }
      }
    ]
  }
}

我试过了,但没有成功,它没有显示“1h”键的值...

 - name: Display all bucket info
    set_fact:
     test: "{{ etat_ms_rep.results | json_query(jmesquery) }}"
    vars:
      jmesquery: " [*].['1h'] "

例如

    - name: Get the value of the key 1h
      debug:
        msg: "{{ etat_ms_rep.results | json_query(jmesquery) }}"
      vars:
        jmesquery: '[].*.*.["1h"]'

给予

  msg:
  - - - - -1
      - - 100
  - - - - 100
      - - 100

如果需要,请展平列表

    - name: Get the value of the key 1h
      debug:
        msg: "{{ etat_ms_rep.results | json_query(jmesquery) | flatten }}"
      vars:
        jmesquery: '[].*.*.["1h"]'

给予

  msg:
  - -1
  - 100
  - 100
  - 100