代码之家  ›  专栏  ›  技术社区  ›  user1039417

在Ansible调试消息中搜索字符串

  •  -1
  • user1039417  · 技术社区  · 7 年前

    通过查看nxos_facts的一些输出结果,我试图找到交换机上的所有up接口:

     - name: get nxos facts via nxapi
      nxos_facts:
        provider: "{{ provider['nxapi'] }}"
        gather_subset:
          - "interfaces"
    
      register: nxfacts_nxapi
    
    - debug: 
        msg: "{{ nxfacts_nxapi.ansible_facts.ansible_net_interfaces | to_nice_json}} "
    

    我可以成功地打印调试,以显示字典的结构:

    "ansible_net_interfaces": {
            "Ethernet1/1": {
                "bandwidth": 1000000,
                "duplex": "full",
                "ipv4": {
                    "address": "10.0.1.2",
                    "masklen": 24
                },
                "macaddress": "0800.276d.ee15",
                "mtu": "1500",
                "speed": "1000 Mb/s",
                "state": "up",
                "type": "100/1000/10000 Ethernet"
            },
            "Ethernet1/10": {
                "bandwidth": 10000000,
                "duplex": "auto",
                "macaddress": "0800.276c.eecc",
                "mode": "access",
                "mtu": "1500",
                "speed": "auto-speed",
                "state": "down",
                "type": "100/1000/10000 Ethernet"
            },
    

    我使用以下版本运行:

    ansible 2.3.1.0
    

    非常感谢您的帮助。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Amit    7 年前

    您可以迭代接口字典,只打印条件为的那些元素 true

    - name: mytask
      debug:
        msg: "{{ item }}"
      when: "item.value.state == 'up'"
      with_dict: "{{ nxfacts_nxapi.ansible_facts.ansible_net_interfaces }}"