我正在嘗試使用 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 }}
現在我必須在路由部分添加幾行:
...
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 檔案中創建一個串列,其中包含一個 ips 串列。
ROUTES:
- ip: "aaa.AAA.aaa.AAA"
- ip: "bbb.BBB.bbb.BBB"
- ip: "ccc.CCC.ccc.CCC"
- ip :"...."
- n
我想在回圈遍歷此串列時將此串列插入到我的 netplan 檔案中。
但我不明白它的作業。你有什么提示或建議嗎?提前謝謝
uj5u.com熱心網友回復:
你在 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 以避免字串前出現空格
結果檔案:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/338990.html
