From 8346098b98d4978bfdad483b14e8bb2c35efcb65 Mon Sep 17 00:00:00 2001
From: Maarten de Waard <maarten@greenhost.nl>
Date: Tue, 14 Sep 2021 12:37:18 +0200
Subject: [PATCH] make sure debian bug workaround is only applied when
 necessary

---
 ansible/roles/pre-configure/tasks/main.yml | 25 ++++++++++++++++------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/ansible/roles/pre-configure/tasks/main.yml b/ansible/roles/pre-configure/tasks/main.yml
index cf13421bd..f1228ba11 100644
--- a/ansible/roles/pre-configure/tasks/main.yml
+++ b/ansible/roles/pre-configure/tasks/main.yml
@@ -50,7 +50,9 @@
 # We work around a Debian Bullseye issue with installing snaps on Xen nodes:
 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=983357 (Debian link)
 # https://code.greenhost.net/greenhost/sysops/-/issues/915#note_108038 (GH # internal link)
-- name: Get kbd device name
+# Once the debian issue is solved and Greenhost has patched the kernel, these
+# three workaround commands can be removed.
+- name: Workaround debian bug 1/3
   shell: journalctl -k | awk '/Xen.Virtual.Keyboard/ {print $11}'
   args:
     # Only run this if kubectl snap has not been installed yet
@@ -59,16 +61,25 @@
   failed_when: false
   changed_when: false
 
+- name: Workaround debian bug 2/3
+  # kubectl needs to get installed as "classic" snap
+  command: mount --bind /dev/zero /sys/{{ kbd_device.stdout }}/uevent
+  args:
+    creates: /snap/bin/kubectl
+  when: kdb_device.stdout != ""
+
 - name: Install kubectl snap
   # kubectl needs to get installed as "classic" snap
-  command: "{{ item }}"
+  command: snap install --classic kubectl
   args:
     creates: /snap/bin/kubectl
-  with_items:
-    # mount and umount commands are part of the workaround mentioned above
-    - sudo mount --bind /dev/zero /sys/{{ kbd_device.stdout }}/uevent
-    - snap install --classic kubectl
-    - sudo umount /sys/{{ kbd_device.stdout }}/uevent
+
+- name: Workaround debian bug 3/3
+  # kubectl needs to get installed as "classic" snap
+  command: umount /sys/{{ kbd_device.stdout }}/uevent
+  args:
+    creates: /snap/bin/kubectl
+  when: kdb_device.stdout != ""
 
 - name: Create kubectl symlink to /usr/local/bin
   file:
-- 
GitLab