From a669d02598dd09421a75fedaaa441b39598c5eb0 Mon Sep 17 00:00:00 2001
From: Lars Beckers <lars.beckers@rwth-aachen.de>
Date: Tue, 10 Jul 2018 18:14:21 +0200
Subject: [PATCH] radius-client: add functional "dependency-management"

---
 radius-client/tasks/main.yml                  | 32 +++++++++++++++++++
 .../templates/networkd-override.conf.j2       |  2 ++
 radius-client/templates/wpa_wait.sh.j2        |  5 +++
 3 files changed, 39 insertions(+)
 create mode 100644 radius-client/templates/networkd-override.conf.j2
 create mode 100755 radius-client/templates/wpa_wait.sh.j2

diff --git a/radius-client/tasks/main.yml b/radius-client/tasks/main.yml
index bf2ae31..7675c3b 100644
--- a/radius-client/tasks/main.yml
+++ b/radius-client/tasks/main.yml
@@ -42,6 +42,38 @@
   tags:
     - 8021x
 
+- name: ensure a script allows waiting for a connection
+  template:
+    src: wpa_wait.sh.j2
+    dest: /usr/local/bin/wpa_wait.sh
+    owner: root
+    group: root
+    mode: 0755
+  tags:
+    - 8021x
+
+- name: ensure we can override networkd service settings
+  file:
+    state: directory
+    path: /etc/systemd/system/systemd-networkd.service.d
+    owner: root
+    group: root
+    mode: 0644
+  tags:
+    - 8021x
+
+- name: ensure systemd-networkd waits for wpa_supplicant to authenticate
+  template:
+    src: networkd-override.conf.j2
+    dest: /etc/systemd/system/systemd-networkd.service.d/override.conf
+    owner: root
+    group: root
+    mode: 0644
+  notify:
+    - reload systemd service files
+  tags:
+    - 8021x
+
 - meta: flush_handlers
 
 - name: ensure wpasupplicant is enabled and running
diff --git a/radius-client/templates/networkd-override.conf.j2 b/radius-client/templates/networkd-override.conf.j2
new file mode 100644
index 0000000..f61ae97
--- /dev/null
+++ b/radius-client/templates/networkd-override.conf.j2
@@ -0,0 +1,2 @@
+[Service]
+ExecStartPre=/usr/local/bin/wpa_wait.sh
diff --git a/radius-client/templates/wpa_wait.sh.j2 b/radius-client/templates/wpa_wait.sh.j2
new file mode 100755
index 0000000..13a3a0f
--- /dev/null
+++ b/radius-client/templates/wpa_wait.sh.j2
@@ -0,0 +1,5 @@
+#!/bin/bash
+journalctl -u wpa_supplicant-wired@{{ ansible_default_ipv4.interface }} -b | tail -n1 | grep CONNECTED
+while [ $? == 1 ]; do
+	journalctl -u wpa_supplicant-wired@{{ ansible_default_ipv4.interface }} -b | tail -n1 | grep CONNECTED
+done
-- 
GitLab