簡體   English   中英

使用 ansible 事實過濾帶有 fact = value 的接口

[英]Use ansible facts to filter interfaces with fact = value

我想使用可靠的事實來過濾其模塊設置為 igb 的網絡接口。

我知道我可以運行此命令並獲取所有接口的網絡事實。 (包括每個接口的模塊)

ansible -m setup -a 'gather_subset=network' host.so.com

我已經嘗試在下面使用這些變量並對變量進行調試,希望看到該模塊的接口名稱,但我只能讓它輸出帶有 module=ibg 的接口的所有事實,而不僅僅是設備名稱.

allNetworkModules: "{{ ansible_facts | dict2items | selectattr('value.module', 'defined') | map(attribute='value') | list }}"

ixgbe_module: "{{ ansible_facts | dict2items | selectattr('value.module', 'defined') | selectattr('value.module', 'equalto', 'igb') | list }}"

誰能告訴我如何過濾以獲取接口名稱?

謝謝

如果您只想查看使用特定模塊的所有接口的名稱,您可以執行以下操作:

- hosts: localhost
  gather_facts: true
  vars:
    module_name: e1000e
  tasks:
    - debug:
        msg: >-
          {{
            ansible_facts | dict2items
            | selectattr('value.module', 'defined')
            | selectattr('value.module', 'equalto', module_name)
            | map(attribute='key')
            | list
          }}

在我的系統上,它有一個e1000e網卡,這將輸出:

TASK [debug] *****************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": [
        "eth0"
    ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM