diff --git a/collections/requirements.yml b/collections/requirements.yml
new file mode 100644
index 0000000000000000000000000000000000000000..afc836d72e1225a8a392a093e8634e94d03b8e7a
--- /dev/null
+++ b/collections/requirements.yml
@@ -0,0 +1,3 @@
+---
+collections:
+  - name: community.general
diff --git a/inventory/sample/group_vars/all.yml b/inventory/sample/group_vars/all.yml
index 7d99d600897377ee5644e82693f1815b8a559310..e2c26e13d7b5e09c91aea25032dd8f9950410dfe 100644
--- a/inventory/sample/group_vars/all.yml
+++ b/inventory/sample/group_vars/all.yml
@@ -1,5 +1,5 @@
 ---
-k3s_version: v1.17.5+k3s1
+k3s_version: v1.22.3+k3s1
 ansible_user: debian
 systemd_dir: /etc/systemd/system
 
diff --git a/roles/k3s/master/defaults/main.yml b/roles/k3s/master/defaults/main.yml
index 39096ec0b174ac42b2202997f4f2fdfbd3b18d6c..ad94756e7c494198e5e1b85382e49c7cf0f83911 100644
--- a/roles/k3s/master/defaults/main.yml
+++ b/roles/k3s/master/defaults/main.yml
@@ -1,5 +1,4 @@
 ---
-ansible_user: root
 server_init_args: >-
   {% if groups['master'] | length > 1 %}
     {% if ansible_host == hostvars[groups['master'][0]]['ansible_host'] | default(groups['master'][0]) %}
diff --git a/roles/k3s/master/tasks/main.yml b/roles/k3s/master/tasks/main.yml
index 704c62baeb915e8010f173e9477296435867a8d8..2cf08657253ff1f7be5b288e11a53be43b3228b6 100644
--- a/roles/k3s/master/tasks/main.yml
+++ b/roles/k3s/master/tasks/main.yml
@@ -46,7 +46,7 @@
     dest: "{{ systemd_dir }}/k3s.service"
     owner: root
     group: root
-    mode: 0755
+    mode: 0644
 
 - name: Enable and check K3s service
   systemd:
@@ -57,21 +57,21 @@
 
 - name: Wait for node-token
   wait_for:
-    path: /var/lib/rancher/k3s/server/node-token
+    path: "{{ k3s_server_location }}/server/node-token"
 
 - name: Register node-token file access mode
   stat:
-    path: /var/lib/rancher/k3s/server
+    path: "{{ k3s_server_location }}/server/node-token"
   register: p
 
 - name: Change file access node-token
   file:
-    path: /var/lib/rancher/k3s/server
+    path: "{{ k3s_server_location }}/server/node-token"
     mode: "g+rx,o+rx"
 
 - name: Read node-token from master
   slurp:
-    src: /var/lib/rancher/k3s/server/node-token
+    path: "{{ k3s_server_location }}/server/node-token"
   register: node_token
 
 - name: Store Master node-token
@@ -80,7 +80,7 @@
 
 - name: Restore node-token file access
   file:
-    path: /var/lib/rancher/k3s/server
+    path: "{{ k3s_server_location }}/server/node-token"
     mode: "{{ p.stat.mode }}"
 
 - name: Create directory .kube
diff --git a/roles/k3s/master/templates/k3s.service.j2 b/roles/k3s/master/templates/k3s.service.j2
index ae5cb484ef094383a35b76b0f6e43691a19f0d8a..a56ab10840da190f57dbf6e88566880b2de6ff7c 100644
--- a/roles/k3s/master/templates/k3s.service.j2
+++ b/roles/k3s/master/templates/k3s.service.j2
@@ -7,7 +7,7 @@ After=network-online.target
 Type=notify
 ExecStartPre=-/sbin/modprobe br_netfilter
 ExecStartPre=-/sbin/modprobe overlay
-ExecStart=/usr/local/bin/k3s server {{ extra_server_args | default("") }}
+ExecStart=/usr/local/bin/k3s server --data-dir {{ k3s_server_location }} {{ extra_server_args | default("") }}
 KillMode=process
 Delegate=yes
 # Having non-zero Limit*s causes performance problems due to accounting overhead
diff --git a/roles/prereq/tasks/main.yml b/roles/prereq/tasks/main.yml
index 97617cf8fb7405d6157841961ca4e4728fc0873f..e857729b88dcb4c2b387c80a88a0fecd389dcc2d 100644
--- a/roles/prereq/tasks/main.yml
+++ b/roles/prereq/tasks/main.yml
@@ -17,6 +17,7 @@
     value: "1"
     state: present
     reload: yes
+  when: ansible_all_ipv6_addresses
 
 - name: Add br_netfilter to /etc/modules-load.d/
   copy:
diff --git a/roles/reset/tasks/main.yml b/roles/reset/tasks/main.yml
index 8d81d710f52b247f9c2a22b08509d52af4ec8f9d..1547c4d75ad355c68bb839e1124a0de66bab4cc0 100644
--- a/roles/reset/tasks/main.yml
+++ b/roles/reset/tasks/main.yml
@@ -31,12 +31,12 @@
     name: "{{ item }}"
     state: absent
   with_items:
+    - /usr/local/bin/k3s
     - "{{ systemd_dir }}/k3s.service"
     - "{{ systemd_dir }}/k3s-node.service"
     - /etc/rancher/k3s
     - /var/lib/kubelet
     - /var/lib/rancher/k3s
-    - /usr/local/bin/k3s
 
 - name: daemon_reload
   systemd:
diff --git a/roles/reset/tasks/umount_with_children.yml b/roles/reset/tasks/umount_with_children.yml
index 6e1f4bf0d2fc17b77ff136b796e9c447ad04c7c5..5883b70a64dd4d62bc63cc95a2ed1ef6d2c481ce 100644
--- a/roles/reset/tasks/umount_with_children.yml
+++ b/roles/reset/tasks/umount_with_children.yml
@@ -6,6 +6,7 @@
     executable: /bin/bash
   failed_when: false
   changed_when: get_mounted_filesystems.stdout | length > 0
+  check_mode: false
 
 - name: Umount filesystem
   mount: