小编Dou*_*oug的帖子

在 Ansible 中使用正则表达式从列表中提取单个项目

我正在尝试在 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)

ubuntu ansible

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

ansible ×1

ubuntu ×1