来自 ansible 网络接口的订单列表
order list from ansible network interfaces
我正在尝试设置一个 linux docker 主机 w/ansible。
众所周知,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.j2 模板
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 可以像这样
“['ens224','ens192']”
但网络是手动定义的,而不是使用 dhcp,所以我需要按正确顺序排列的列表。
"['ens192','ens224']"
如何在第一步或什至在另一步中订购 interfaces_list?
How can i order the interfaces_list in the first step or even in
another step?
可以在 set_fact 步骤本身使用 sort jinja2 过滤器对列表进行排序,
- set_fact:
interfaces_list: "{{ ansible_interfaces | select('match', '^(ens)[0-9]+') | sort | list }}"
调试给出,
ok: [localhost] =>
interfaces_list:
- ens192
- ens224
我正在尝试设置一个 linux docker 主机 w/ansible。 众所周知,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.j2 模板
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 可以像这样
“['ens224','ens192']”
但网络是手动定义的,而不是使用 dhcp,所以我需要按正确顺序排列的列表。
"['ens192','ens224']"
如何在第一步或什至在另一步中订购 interfaces_list?
How can i order the interfaces_list in the first step or even in another step?
可以在 set_fact 步骤本身使用 sort jinja2 过滤器对列表进行排序,
- set_fact:
interfaces_list: "{{ ansible_interfaces | select('match', '^(ens)[0-9]+') | sort | list }}"
调试给出,
ok: [localhost] =>
interfaces_list:
- ens192
- ens224