拥有这样的字典:
ossec_datacenter: atlanta: hostname: 'server1.fakedomain.net' ip: '192.168.12.170' port: '1515' miami: hostname: 'server2.fakedomain.net' ip: '192.168.20.31' port: '1514' dallas: hostname: 'server2.fakedomain.net' ip: '192.168.20.20' port: '1515'
如何在when
子句中搜索此词典中的所有值?
我可以使用访问变量 ossec_datacenter[ossec_dc]['hostname']
但我想搜索所有值以确保不存在匹配项。
换句话说,我不希望inventory_hostname
在该数据结构中的任何位置找到“ 或” IP。
如果要使用json_query(需要ansible 2.2),则可以执行以下操作来搜索ip和主机名:
- name: find inventory_hostname set_fact: found: True with_items: - "{{ ossec_datacenter | json_query('*.ip') }}" - "{{ ossec_datacenter | json_query('*.hostname') }}" when: "inventory_hostname == item"
或者,如果您要搜索数据中心中的任何键(ip,主机名或端口):
- name: find inventory_hostname set_fact: found: True with_items: "{{ ossec_datacenter | json_query('*.*') }}" when: "inventory_hostname == item"
然后测试found
var。