Sim*_*eth 2 ansible ansible-playbook ansible-2.x
拥有这样的字典:
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'
Run Code Online (Sandbox Code Playgroud)
如何在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"
Run Code Online (Sandbox Code Playgroud)
或者,如果您要搜索数据中心中的任何键(ip,主机名或端口):
- name: find inventory_hostname
set_fact:
found: True
with_items: "{{ ossec_datacenter | json_query('*.*') }}"
when: "inventory_hostname == item"
Run Code Online (Sandbox Code Playgroud)
然后测试foundvar。
| 归档时间: |
|
| 查看次数: |
6421 次 |
| 最近记录: |