From 4185de5be57c25407270a9577bc3db0e078decfe Mon Sep 17 00:00:00 2001 From: Hinrikus Wolf <hinrikus@fsmpi.rwth-aachen.de> Date: Sun, 3 Nov 2024 16:30:26 +0100 Subject: [PATCH] networkd: make VLANs more versatile --- networkd/tasks/vlan.yml | 4 ++-- networkd/templates/20-wired-routed.network.j2 | 3 +++ networkd/templates/20-wired-vlan.network.j2 | 5 +++++ networkd/templates/vlan.network.j2 | 6 ++++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/networkd/tasks/vlan.yml b/networkd/tasks/vlan.yml index b8f6d15..093acbf 100644 --- a/networkd/tasks/vlan.yml +++ b/networkd/tasks/vlan.yml @@ -34,7 +34,7 @@ group: root mode: '0644' with_items: "{{ vlan.vlans }}" - when: item.bridge + when: item.bridge | default(False) notify: - restart networkd - name: ensure bridge networks are configured @@ -45,6 +45,6 @@ group: root mode: '0644' with_items: "{{ vlan.vlans }}" - when: item.bridge + when: item.bridge | default(False) notify: - restart networkd diff --git a/networkd/templates/20-wired-routed.network.j2 b/networkd/templates/20-wired-routed.network.j2 index 6161bd2..16446cf 100644 --- a/networkd/templates/20-wired-routed.network.j2 +++ b/networkd/templates/20-wired-routed.network.j2 @@ -22,6 +22,9 @@ IPForward=yes {% for key, value in (network.settings|default({})).items() %} {{ key }}={{ value }} {% endfor %} +{% for vlan in network.vlans|default([]) %} +VLAN=vl-{{ vlan.name }} +{% endfor %} {% for route in network.routes|default([{'gateway': network.gateway}]) %} [Route] diff --git a/networkd/templates/20-wired-vlan.network.j2 b/networkd/templates/20-wired-vlan.network.j2 index 4b70521..8d0f671 100644 --- a/networkd/templates/20-wired-vlan.network.j2 +++ b/networkd/templates/20-wired-vlan.network.j2 @@ -1,3 +1,7 @@ +{% if item.1.addresses | default(False) %} +{% set network = item.1 %} +{% include "20-wired-routed.network.j2" %} +{% else %} [Match] Name={{ item.1.interface }} @@ -9,3 +13,4 @@ BindCarrier={{ item.1.interface }} {% if networkd_ipfwd %} IPForward=yes {% endif %} +{% endif %} diff --git a/networkd/templates/vlan.network.j2 b/networkd/templates/vlan.network.j2 index 6b7c90f..2875094 100644 --- a/networkd/templates/vlan.network.j2 +++ b/networkd/templates/vlan.network.j2 @@ -1,4 +1,4 @@ -{% if item.bridge %} +{% if item.bridge | default(False) %} [Match] Name=vl-{{ item.name }} @@ -10,7 +10,9 @@ Bridge=vmbr-{{ item.name }} 'addresses': item.addresses|default([item.address] if item.address is defined else []), 'nameservers': item.nameservers|default([]), 'routes': item.routes|default([{'gateway': item.gateway}] if item.gateway is defined else []), - 'link_local_addressing': item.link_local_addressing|default(None) + 'link_local_addressing': item.link_local_addressing|default(None), + 'settings': item.settings|default({}), + 'custom': item.custom|default([]) } %} {% include "20-wired-routed.network.j2" %} {% endif %} -- GitLab