【问题标题】:Ansible json_query to filter data on dict of list of dictAnsible json_query 过滤字典列表中的数据
【发布时间】:2020-11-03 17:12:01
【问题描述】:

我有一个 Ansible 任务,它根据特定条件收集用户数据并将输出注册到变量中,并尝试在下一个任务中迭代注册的数据以仅获取 name 参数。

{
    "registered_data": {
        "changed": false,
        "msg": "All items completed",
        "results": [
          {
            "ansible_loop_var": "item",
            "changed": false,
            "failed": false,
            "data_details": [
              {
                "name": "John",
                "street": "SanFisco"
              },
              {
                "name": "Dan",
                "street": "Califor"
              },
              {
                "name": "Jack",
                "street": "NY"
              },
              {
                "name": "Wills",
                "street": "NJ"
              }
            ],
            "invocation": {
              "module_args": {
                "sort_by": null,
                "sort_order": null
                }
            },
            "item": {
              "status": "READY"
            }
          },
          {
            "ansible_loop_var": "item",
            "changed": false,
            "failed": false,
            "data_details": [],
            "invocation": {
              "module_args": {
                "sort_by": null,
                "sort_order": null
              }
            },
            "item": {
              "status": "READY"
            }
          },
          {
            "ansible_loop_var": "item",
            "changed": false,
            "failed": false,
            "data_details": [],
            "invocation": {
              "module_args": {
                "sort_by": null,
                "sort_order": null
              }
            },
            "item": {
              "status": "READY"
            }
          }
        ]
      }
}

我正在尝试使用以下 ansible 任务来解析和过滤不返回任何输出的数据。

- name: 'printing data'
  delegate_to: 'localhost'
  when: item
  loop: "{{ registered_data |json_query(projection_query) }}"
  debug:
    msg: "{{ item }}"
  vars:
    projection_query: "results.[*].name"

【问题讨论】:

  • @Zeitounator 对不起。我只是简单地从产生类似结果的 ansible 输出中复制。我现在已经更正了。

标签: ansible json-query


【解决方案1】:

下面的任务

    - debug:
        msg: "{{ registered_data.results|json_query(query) }}"
      vars:
        query: "[].data_details[].name"

给予

  msg:
  - John
  - Dan
  - Jack
  - Wills

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多