【发布时间】:2019-08-16 20:40:21
【问题描述】:
有什么方法可以简化下面的 json_query? 在这里您可以看到我正在尝试使用三个查询设置来提取三个值。由于我在列表中有三个项目,因此将生成与项目列表相对应的三次值。有什么方法可以分开每个项目的价值吗?
ClusterName: xxxx for dv-cn-c1
DomainName: xxxx for dv-cn-c1
ClusterName: xxxx for dv-cn-c2
DomainName: xxxx for dv-cn-c2
请看我的想法
- name: "set fact for policy pkg for list of devices"
set_fact:
ClusterName: "{{ fullinvt | json_query(query1) }}"
DomainName: "{{ fullinvt | json_query(query2) }}"
PolicyName: "{{ fullinvt | json_query(query3) }}"
vars:
#w query: "ansible_facts.checkpoint_servers_gateways.objects[*].policy[].\"cluster-members-access-policy-revision\"[?name == 'dev-cn-c2'].name"
query1: "ansible_facts.checkpoint_servers_gateways.objects[?\"cluster-member-names\"[?contains(@ `{{ item }}`)]].name | [0]"
query2: "ansible_facts.checkpoint_servers_gateways.objects[?\"cluster-member-names\"[?contains(@ `{{ item }}`)]].domain.name | [0]"
query3: "ansible_facts.checkpoint_servers_gateways.objects[?\"cluster-member-names\"[?contains(@ `{{ item }}`)]].policy.\"access-policy-name\" | [0]"
with_items:
- dv-cn-c1
- dv-cn-c2
- dv-cn-4
tags: ADDLAG
【问题讨论】:
-
据我所知,您只能设置一次事实。但是由于迭代
with_items,您将多次设置相同的事实。所以你的任务不会像你预期的那样工作。
标签: ansible ansible-2.x ansible-facts json-query