diff --git a/networkd/defaults/main.yml b/networkd/defaults/main.yml index 4db208748fb8a8a055c19731f25a36777749158c..38d6196259a22d27bcfe27acd32204f886ec1eb8 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 e8e06d914959bb2d617bfbf4d688b5a50c173b6f..60ae00932f92f84b2b60f43ce21654f3c671f9e0 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 a780e7dd48cff00d4afa8bb272a5629a8b758b6d..373769005fe787c3d897c0b2cd57920e4cb28d3d 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 94e034056c6172c74b8094f53c5bbd7d4d76f6ee..7cb766dedb1d00022a9fd3cc33f4f4599c40feaf 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 %}