我有这样的host.yml
---
all:
hosts:
server-a:
server_dc: "Hetzner"
ansible_host: 192.168.1.1
server-b:
server_dc: "OVH"
ansible_host: 192.168.1.2
和剧本的调试是:
- name: sample
debug:
var: hostvars
所有hostvars调试成功。
如何获取相同的宿主变量变量但已过滤。该server_dc中的任何一个都等于OVH
我不想迭代模板,我只是一个包含所有其他属性的新过滤变量。
我需要另一个调试的变量以查看此输出:
['server-b']
答案 0 :(得分:2)
我相信这可以满足您的要求(删除'no_log:true'将导致在您的剧本输出中打印完整的字典)
- set_fact:
filtered_hosts: "{{ filtered_hosts | default({}) | combine({item.key: item.value}) }}"
when: "item.value.server_dc == 'OVH'"
with_dict: "{{ hostvars }}"
no_log: true
- debug:
var: filtered_hosts