在filters的Ansible文档中,显示了以下示例,该示例对数据结构执行JSON查询,选择某些字段name
和port
:
- 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
保留以供以后使用?
答案 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
,其值为9080
,name_server22
= 9090
。