我正在将一个带Ansible的东西部署到
Linux主机上,我需要它只能侦听主机上的第二个NIC.
查看可用的事实,我可以看到ansible_interfaces列出了我的所有NIC,例如
"ansible_interfaces": [ "lo","ens9f0","ens9f1" ]
我知道它不是,所以我可以打折.通过查看ansible_default_ipv4.alias,我可以看到我的主要是ens9f0.
在剧本/剧本中,我怎么能算出ens9f1是次要的?
这个用例是我想在模板中执行以下操作:
Listen {{ ansible_second_nic.ipv4.address }}
我工作的每台机器可能有不同的NIC名称,所以我不能在我的角色中硬编码.从历史上看,我只假设eth1,但这不再安全.
解决方法
取ansible_interfaces,减去’lo’和ansible_default_ipv4.alias,取剩余列表的第一个元素:
- debug: msg: "{{ ansible_interfaces | difference(['lo',ansible_default_ipv4.alias]) | first }}"