通过特殊属性过滤hostvar

时间:2018-12-17 22:52:14

标签: ansible

我有这样的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']

1 个答案:

答案 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