diff --git a/networkd/tasks/vlan.yml b/networkd/tasks/vlan.yml index b8f6d15a4bd2a8c3b61ef903cd81ef2a82c13968..093acbf628430961894406720e57184ff7582cb2 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 6161bd248d2bec5b0f632da75947eced71a9dc96..cb4257f0be64be2da79637b1df498042cb329816 100644 --- a/networkd/templates/20-wired-routed.network.j2 +++ b/networkd/templates/20-wired-routed.network.j2 @@ -1,6 +1,7 @@ {% if not network is defined %} {% set network = item.1 %} {% endif %} + [Match] Name={{ network.interfaces|default([network.interface])|join(' ') }} @@ -16,12 +17,15 @@ LinkLocalAddressing={{ network.link_local_addressing }} {% for server in network.nameservers|default(nameservers) %} DNS={{ server }} {% endfor %} -{% if networkd_ipfwd %} +{% if networkd_ipfwd or network.networkd_ipfwd|default(false) %} IPForward=yes {% endif %} {% 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 4b7052153a9bae40c7c8ddcdfa1065e05c218e6a..fea42ca1851c82a9dc6a364f78d0526e78703e0e 100644 --- a/networkd/templates/20-wired-vlan.network.j2 +++ b/networkd/templates/20-wired-vlan.network.j2 @@ -1,3 +1,8 @@ +{% if item.1.addresses | default(False) %} +{% set network = item.1 %} +{% include "20-wired-routed.network.j2" %} +{% else %} + [Match] Name={{ item.1.interface }} @@ -9,3 +14,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 6b7c90f0c527a78b4175a1af7f280a205aae62cd..bcb92b60643a036b7f87ddf8d4c081c07625d522 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 }} @@ -9,8 +9,11 @@ Bridge=vmbr-{{ item.name }} 'interface': 'vl-' + item.name, 'addresses': item.addresses|default([item.address] if item.address is defined else []), 'nameservers': item.nameservers|default([]), + 'networkd_ipfwd': item.networkd_ipfwd|default(false), '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 %}