From a0b7236dc00e1f6908c40dc2d4108b552cd1f831 Mon Sep 17 00:00:00 2001
From: Lars Beckers <lars.beckers@rwth-aachen.de>
Date: Wed, 8 Nov 2017 17:56:15 +0100
Subject: [PATCH] client: use networkd instead of legacy method

---
 client/handlers/main.yml             |  7 ++++
 client/tasks/network.yml             | 53 ++++++++++++++++++++++++++++
 client/templates/20-wired.network.j2 |  5 +++
 3 files changed, 65 insertions(+)
 create mode 100644 client/tasks/network.yml
 create mode 100644 client/templates/20-wired.network.j2

diff --git a/client/handlers/main.yml b/client/handlers/main.yml
index 021071d..68bca17 100644
--- a/client/handlers/main.yml
+++ b/client/handlers/main.yml
@@ -6,3 +6,10 @@
 
 - name: restart sddm
   service: name=sddm state=restarted
+
+- name: reload systemd service files
+  systemd: daemon_reload=yes
+
+- name: restart networkd
+  service: name=systemd-networkd state=restarted
+
diff --git a/client/tasks/network.yml b/client/tasks/network.yml
new file mode 100644
index 0000000..55ba1f9
--- /dev/null
+++ b/client/tasks/network.yml
@@ -0,0 +1,53 @@
+---
+
+- name: ensure networkd has a valid configuration
+  template:
+    src: 20-wired.network.j2
+    dest: /etc/systemd/network/20-wired.network
+    owner: root
+    group: root
+    mode: 0644
+  notify:
+    - reload systemd service files
+    - restart networkd
+
+- meta: flush_handlers
+
+- name: ensure networkd is enabled and running
+  service:
+    name: systemd-networkd
+    state: started
+    enabled: yes
+
+- name: ensure legacy methods are disabled
+  service:
+    name: "{{ item }}"
+    state: stopped
+    enabled: no
+  with_items:
+    - "ifup@"
+    - "networking"
+
+- name: ensure we wait for network to be online
+  service:
+    name: systemd-networkd-wait-online
+    enabled: yes
+
+- name: ensure ansible's copy module does not bullshit us
+  file:
+    path: /etc/systemd/system/sddm.service.d
+    state: directory
+    owner: root
+    group: root
+    mode: 0644
+
+- name: ensure sddm waits for network to be online
+  copy:
+    src: sddm-override.conf
+    dest: /etc/systemd/system/sddm.service.d/network.conf
+    owner: root
+    group: root
+    mode: 0644
+  notify:
+    - reload systemd service files
+
diff --git a/client/templates/20-wired.network.j2 b/client/templates/20-wired.network.j2
new file mode 100644
index 0000000..020f881
--- /dev/null
+++ b/client/templates/20-wired.network.j2
@@ -0,0 +1,5 @@
+[Match]
+Name={{ ansible_default_ipv4.interface }}
+
+[Network]
+DHCP=ipv4
-- 
GitLab