来自ansible网络接口的订单列表



我正在尝试设置一个带有ansible的linux docker主机。众所周知,docker创建网络接口。我的机器还有两个网络接口,用于通过不同的网络进行联网。剧本片段如下:

- name: Dump grep matching interfaces from ansible_interfaces
set_fact:
interfaces_list: "{{ ansible_interfaces | select('match', '^(ens)[0-9]+') | list
}}"

- name: Push 50-net.yaml
template:
src: netplan.j2
dest: "/etc/netplan/50-net.yaml"
owner: root
group: root
mode: u=rw,g=r,o=r

像这个一样的netplan.js2模板

network:
ethernets:
{{ interfaces_list[0] }}:
addresses: [{{ prod_net_ip }}/24]
gateway4: <gateway-ip>
nameservers:
addresses: [<dns-server-ip>]
dhcp4: no
{{ interfaces_list[1] }}:
addresses: [{{ storage_net_ip }}/24]
dhcp4: no
version: 2

这只是为了了解我想做什么。

interfaces_list可以看起来像这样
"[答案224’,答案192’]";

但是网络是手动定义的,而不是w/dhcp,所以我需要按正确的顺序列出列表
"[答案192’,答案224’]";

如何在第一步甚至另一步中订购interfaces_list

如何在第一步甚至在下一步?

列表可以在set_fact步骤本身上使用sort-jinja2过滤器进行排序,就像这样,

- set_fact:
interfaces_list: "{{ ansible_interfaces | select('match', '^(ens)[0-9]+') | sort | list }}"

调试给出,

ok: [localhost] => 
interfaces_list:
- ens192
- ens224

最新更新