如何使用 ansible 查找第二个网卡的名称?

Ano*_*ing 4 networking automation linux ansible

我正在使用 Ansible 将某些内容部署到 Linux 主机,并且我需要它仅侦听主机上的第二个 NIC。

查看可用的事实,我可以看到 ansible_interfaces 列出了我的所有网卡,例如

 "ansible_interfaces": [
        "lo", 
        "ens9f0", 
        "ens9f1"
 ]
Run Code Online (Sandbox Code Playgroud)

我知道这不是lo,所以我可以打折扣。通过查看 ansible_default_ipv4.alias,我可以看到我的主节点是 ens9f0。

在剧本/剧本中,我如何才能确定 ens9f1 是次要的?

这样做的用例是我想在模板中执行类似以下操作:

Listen {{ ansible_second_nic.ipv4.address }}
Run Code Online (Sandbox Code Playgroud)

我工作的每台机器可能有不同的 NIC 名称,因此我无法在我的角色中对它们进行硬编码。从历史上看,我只会假设 eth1,但这不再安全。

Kon*_*rov 5

ansible_interfaces、减去'lo'ansible_default_ipv4.alias,取剩余列表的第一个元素:

- debug:
    msg: "{{ ansible_interfaces | difference(['lo',ansible_default_ipv4.alias]) | first }}"
Run Code Online (Sandbox Code Playgroud)