Ansible:如何存储json_query的结果?

时间:2017-09-05 06:08:50

标签: json filter ansible

filters的Ansible文档中,显示了以下示例,该示例对数据结构执行JSON查询,选择某些字段nameport

- name: "Display all server ports and names from cluster1"
  debug: var=item
  with_items: "{{domain_definition|json_query(server_query)}}"
  vars:
    server_query: "domain.server[?cluster=='cluster2'].{name: name, port: port}"

我设法使用这个逻辑来解析REST服务的JSON响应,但我不仅打印出结果,而且在我的剧本中再次重复使用它。

如何将上述变量var保留以供以后使用?

1 个答案:

答案 0 :(得分:1)

只需将debug来电替换为set_fact。例如:

- name: "Display all server ports and names from cluster1"
  set_fact:
    'name_{{ item.name }}': '{{ item.port }}'
  with_items: "{{domain_definition|json_query(server_query)}}"
  vars:
    server_query: "domain.server[?cluster=='cluster2'].{name: name, port: port}"

这将生成两个持久性事实(基于文档数据):name_server21,其值为9080name_server22 = 9090