From 08706617833df371aa1b58fa9a8729eb67a120e0 Mon Sep 17 00:00:00 2001 From: Lars Beckers <lars.beckers@rwth-aachen.de> Date: Wed, 31 Aug 2022 00:20:11 +0200 Subject: [PATCH] networkd: add generic customization options --- networkd/defaults/main.yml | 8 +++++++- networkd/tasks/main.yml | 2 +- networkd/templates/20-wired-dhcp.network.j2 | 9 ++++++++- networkd/templates/20-wired-routed.network.j2 | 13 +++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/networkd/defaults/main.yml b/networkd/defaults/main.yml index 4db2087..38d6196 100644 --- a/networkd/defaults/main.yml +++ b/networkd/defaults/main.yml @@ -14,6 +14,7 @@ # address: '10.10.10.10/24' # gateway: '10.10.10.1' # - type: 'routed' +# identifier: 'file-name' # interfaces: # - 'eth0' # addresses: @@ -51,11 +52,16 @@ # name: transport # bridge: true -networkd_type: 'dhcp' # if networkd not defined networkd_ipfwd: false # works only globally anyway ### old style config follows, still supported +# if networkd not defined +networkd_type: 'dhcp' + +# for static and dhcp types only +# networkd_interface: eth0 + # for static type only networkd_address: 10.10.10.10/24 networkd_gateway: 10.10.10.1 diff --git a/networkd/tasks/main.yml b/networkd/tasks/main.yml index e8e06d9..60ae009 100644 --- a/networkd/tasks/main.yml +++ b/networkd/tasks/main.yml @@ -3,7 +3,7 @@ - name: ensure networkd has a valid configuration template: src: "20-wired-{{ item.1.type }}.network.j2" - dest: /etc/systemd/network/{{ item.0 }}-wired.network + dest: "/etc/systemd/network/{{ item.0 }}-{{ item.1.identifier|default('wired') }}.network" owner: root group: root mode: '0644' diff --git a/networkd/templates/20-wired-dhcp.network.j2 b/networkd/templates/20-wired-dhcp.network.j2 index a780e7d..3737690 100644 --- a/networkd/templates/20-wired-dhcp.network.j2 +++ b/networkd/templates/20-wired-dhcp.network.j2 @@ -1,8 +1,15 @@ [Match] -Name={{ item.1.interface|default(ansible_default_ipv4.interface) }} +Name={{ item.1.interface|default(networkd_interface|default(ansible_default_ipv4.interface)) }} [Network] DHCP=ipv4 {% if networkd_ipfwd %} IPForward=yes {% endif %} +{% for custom in network.custom|default([]) %} + +[{{ custom.category }}] +{% for key, value in custom.settings.items() %} +{{ key }}={{ value }} +{% endfor %} +{% endfor %} diff --git a/networkd/templates/20-wired-routed.network.j2 b/networkd/templates/20-wired-routed.network.j2 index 94e0340..7cb766d 100644 --- a/networkd/templates/20-wired-routed.network.j2 +++ b/networkd/templates/20-wired-routed.network.j2 @@ -15,6 +15,9 @@ DNS={{ server }} {% if networkd_ipfwd %} IPForward=yes {% endif %} +{% for key, value in (network.settings|default({})).items() %} +{{ key }}={{ value }} +{% endfor %} {% endif %} {% for route in network.routes|default([{'gateway': network.gateway}]) %} @@ -38,4 +41,14 @@ PreferredSource={{ route.source }} {% if route.metric is defined %} Metric={{ route.metric }} {% endif %} +{% for key, value in (route.settings|default({})).items() %} +{{ key }}={{ value }} +{% endfor %} +{% endfor %} +{% for custom in network.custom|default([]) %} + +[{{ custom.category }}] +{% for key, value in custom.settings.items() %} +{{ key }}={{ value }} +{% endfor %} {% endfor %} -- GitLab