当前位置:  开发笔记 > 前端 > 正文

在Ansible中搜索字典值

如何解决《在Ansible中搜索字典值》经验,为你挑选了1个好方法。

拥有这样的字典:

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。



1> Rob H..:

如果要使用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"

然后测试foundvar。

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有