如何通过ansible用路由填充netplan配置文件



我正试图通过使用ansible来管理netplan。这在过去工作得很好,我使用了以下模板:

network:
version: 2
renderer: networkd
ethernets:
{{ ansible_default_ipv4.interface }}:
match:
macaddress: {{ ansible_default_ipv4.macaddress }}
dhcp4: false
dhcp6: false
bridges:
br0:
macaddress: {{ ansible_default_ipv4.macaddress }}
interfaces:
- {{ ansible_default_ipv4.interface }}
dhcp4: no
dhcp6: no
addresses: [{{ ansible_default_ipv4.address }}/32]
routes:
- to: 0.0.0.0/0
via: {{ ansible_default_ipv4.gateway }}
on-link: true
nameservers:
addresses:
- {{ DNS1 }}
- {{ DNS2 }}
- {{ DNS3 }}

现在我必须在route部分添加几行:

...
bridges:
br0:
routes:
- to: 0.0.0.0/0
via: {{ ansible_default_ipv4.gateway }}
on-link: true
- to: {{ IP1 }}/32
scope: link
- to: {{ IP2 }}/32
scope: link
...

现在到了我挣扎的部分。

由于我的本地路由因主机而异,我不能使用静态模板。因此,我尝试在主机vars文件中创建一个列表,其中包含一个ip列表。

ROUTES:
- ip: "aaa.AAA.aaa.AAA"
- ip: "bbb.BBB.bbb.BBB"
- ip: "ccc.CCC.ccc.CCC"
- ip :"...."
- n

我想在遍历这个列表时将这个列表插入到我的netplan文件中。

但是我不让它工作。你有什么提示或建议吗?提前谢谢

你添加了loop over ROUTES变量

- name: vartest
hosts: localhost
vars:
ROUTES:
- ip: "aaa.AAA.aaa.AAA"
- ip: "bbb.BBB.bbb.BBB"
- ip: "ccc.CCC.ccc.CCC" 
tasks: 
- name: display
template:
src: test.j2 
dest: test.conf

模板文件:

:
routes:
- to: 0.0.0.0/0
via: {{ ansible_default_ipv4.gateway }}
on-link: true
{% for rec in ROUTES %}
- to: {{ rec.ip }}/32
scope: link
{% endfor %}

注意从行首开始循环jinja2,以避免字符串

前出现空白。result in result file:

routes:
- to: 0.0.0.0/0
via: 10.0.2.2
on-link: true
- to: aaa.AAA.aaa.AAA/32
scope: link
- to: bbb.BBB.bbb.BBB/32
scope: link
- to: ccc.CCC.ccc.CCC/32
scope: link

相关内容

  • 没有找到相关文章

最新更新