diff --git a/systemd/defaults.yaml b/systemd/defaults.yaml
index 3febe6c96c42ae92e8f05e696728b427951e470a..4a7e579241786a8561c845ba4d3db9e604cac230 100644
--- a/systemd/defaults.yaml
+++ b/systemd/defaults.yaml
@@ -19,6 +19,8 @@ systemd:
PollIntervalMaxSec: 2048
networkd:
+ # networkctl reload is available since systemd 244
+ networkctl_reload: false
pkg: {}
path: /etc/systemd/network
service: systemd-networkd
diff --git a/systemd/networkd/profiles.sls b/systemd/networkd/profiles.sls
index 478fba7cb63d0d205754894c2b9de446570b4053..7c5591167fcc6c5e05127dbc4ea2e908509ab372 100644
--- a/systemd/networkd/profiles.sls
+++ b/systemd/networkd/profiles.sls
@@ -5,8 +5,10 @@
{%- set networkd = systemd.get('networkd', {}) %}
{%- set profiles = networkd.get('profiles', {}) %}
+{%- if networkd.networkctl_reload %}
include:
- - systemd.reload
+ - systemd.networkd.reload
+{%- endif %}
{% if profiles is mapping %}
{% for networkdprofile, types in profiles.items() %}
@@ -23,8 +25,10 @@ include:
- dir_mode: 755
- context:
config: {{ profileconfig|json }}
+{%- if networkd.networkctl_reload %}
- watch_in:
- - cmd: reload_systemd_configuration
- {% endfor %}
-{% endfor %}
-{% endif %}
+ - cmd: systemd-networkd-reload-cmd-wait
+{%- endif %}
+ {%- endfor %}
+{%- endfor %}
+{%- endif %}
diff --git a/systemd/networkd/reload.sls b/systemd/networkd/reload.sls
new file mode 100644
index 0000000000000000000000000000000000000000..4ee5dd92db904ca43a4af56619381d79ad362a86
--- /dev/null
+++ b/systemd/networkd/reload.sls
@@ -0,0 +1,9 @@
+include:
+ - systemd.networkd
+
+systemd-networkd-reload-cmd-wait:
+ cmd.wait:
+ - name: networkctl reload
+ - runas: root
+ - require:
+ - service: networkd
diff --git a/systemd/osmap.yaml b/systemd/osmap.yaml
index 35f30c141246441cff8969afb2e9dc1688d08a4a..3269553cfe37bb56f2200ce16ba5300bd6fda377 100644
--- a/systemd/osmap.yaml
+++ b/systemd/osmap.yaml
@@ -14,6 +14,7 @@ Fedora:
pkgs_extra:
- python3-systemd
networkd:
+ networkctl_reload: true
pkg: {}
resolved:
pkg: {}