我正在尝试在 Ubuntu 16.04 上配置桥接接口,模板化/etc/network/interfaces file以自动插入本地 NIC,如下所示:
auto br0
iface br0 inet dhcp
bridge_ports <interface>
Run Code Online (Sandbox Code Playgroud)
我没有biosdevname安装,所以界面显示为ens33(在我的测试系统上),并在其他主机上发生变化;而不是历史性的eth0。
我不能{{ ansible_default_ipv4.interface }}用来完成文件,因为这只会在第一次运行时正确填充文件 - 重新启动后,运行 playbook 会使用桥br0端口完成文件。
我已经尝试了多次使用该{{ ansible_interfaces }}变量的不同迭代,并尝试根据正则表达式 en.* 进行匹配(所有这些端口都将是固定的以太网网卡),但没有一个正确填充文件。
到目前为止,我最近的距离是:
- debug: msg={{ ansible_interfaces | map('match','ens.*') | list }}
Run Code Online (Sandbox Code Playgroud)
哪个输出
TASK [openvpn : debug] ****************************************************
ok: [192.168.0.134] => {
"msg": [
false,
false,
true
]
}
Run Code Online (Sandbox Code Playgroud)
但是我需要能够提取匹配的实际适配器名称,而不仅仅是是否存在匹配。
或者,
- debug: msg="{{ item }}"
when: "{{ item }} | …Run Code Online (Sandbox Code Playgroud)