【问题标题】:ansible json_query merge 2 resultsansible json_query 合并 2 个结果
【发布时间】:2021-06-21 06:52:28
【问题描述】:

我有来自 Netbox 服务器的结果:

我想找到状态为 Deprecated 的下一个 awaible vlan。

- name: Create Fact 
  set_fact:
    netbox_json_filter:  "{{ netbox_json.json.results | json_query('[*].vid') }}"

- debug:
    var: netbox_json_filter


- name: Create Fact2
  set_fact:
    netbox_json_filter2:  "{{ netbox_json.json.results | json_query('[*].status.value') }}" 

- debug:
    var: netbox_json_filter2

是否可以合并 2 个结果或使用新查询?

{ “计数”:2, “下一个”:空, “上一个”:空, “结果”: [ { “身份证”:4, "url": "http://192.168.209.230:8000/api/ipam/vlans/4/", "display": "测试 VLAN (400)", “网站”:空, “组”:空, “视频”:400, "name": "测试 VLAN", “租户”:空, “地位”: { “价值”:“弃用”, “标签”:“已弃用” }, “角色”:空, “描述”: ””, “标签”:[], "display_name": "测试 VLAN (400)", “自定义字段”:{ “杰克”:空 }, “创建”:“2021-06-19”, "last_updated": "2021-06-19T17:51:14.262534Z", “前缀计数”:0 }, { “身份证”:5, "url": "http://192.168.209.230:8000/api/ipam/vlans/5/", "display": "测试 VLAN (401)", “网站”:空, “组”:空, “视频”:401, "name": "测试 VLAN", “租户”:空, “地位”: { “价值”:“保留”, “标签”:“保留” }, “角色”:空, “描述”: ””, “标签”:[], "display_name": "测试 VLAN (401)", “自定义字段”:{ “杰克”:空 }, “创建”:“2021-06-19”, "last_updated": "2021-06-19T17:59:40.343774Z", “前缀计数”:0 } ] }

【问题讨论】:

标签: ansible


【解决方案1】:

给定简化数据

    resutls:
      - vid: 1
        status:
          value: A
      - vid: 2
        status:
          value: B
      - vid: 3
        status:
          value: C

可以创建列表。见MultiSelect List,例如

    - set_fact:
        filter: "{{ resutls|json_query('[].[vid, status.value]') }}"

给予

  filter:
  - - 1
    - A
  - - 2
    - B
  - - 3
    - C

下一个选项是创建字典。见MultiSelect Hash,例如

    - set_fact:
        filter: "{{ resutls|json_query('[].{vid: vid, value: status.value}') }}"

给予

  filter:
  - value: A
    vid: 1
  - value: B
    vid: 2
  - value: C
    vid: 3

【讨论】:

  • 不客气。请编辑您的问题。如果你这样离开它,它将被关闭。
猜你喜欢
  • 2020-02-05
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 2023-03-25
  • 2020-05-08
  • 2017-04-29
  • 2017-01-31
  • 1970-01-01
相关资源
最近更新 更多