feat: always disable swap on node startup (#328)
Co-authored-by: Tadas Sutkaitis <t.sutkaitis@syseleven.de>
diff --git a/roles/kubernetes/files/noswap.service b/roles/kubernetes/files/noswap.service
new file mode 100644
index 0000000..30fedd4
--- /dev/null
+++ b/roles/kubernetes/files/noswap.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Disable swap
+Before=kubelet.service
+After=local-fs.target
+
+[Service]
+Type=oneshot
+User=root
+ExecStart=/sbin/swapoff -a
+
+[Install]
+WantedBy=default.target
diff --git a/roles/kubernetes/handlers/main.yml b/roles/kubernetes/handlers/main.yml
new file mode 100644
index 0000000..4605518
--- /dev/null
+++ b/roles/kubernetes/handlers/main.yml
@@ -0,0 +1,20 @@
+# Copyright (c) 2023 VEXXHOST, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+- name: Enable noswap service
+ ansible.builtin.systemd:
+ name: noswap
+ state: started
+ enabled: true
+ daemon_reload: true
diff --git a/roles/kubernetes/tasks/main.yml b/roles/kubernetes/tasks/main.yml
index 583829f..8051d13 100644
--- a/roles/kubernetes/tasks/main.yml
+++ b/roles/kubernetes/tasks/main.yml
@@ -95,6 +95,15 @@
- swap
- none
+- name: Create noswap systemd service config file
+ ansible.builtin.copy:
+ src: noswap.service
+ dest: /etc/systemd/system/noswap.service
+ owner: root
+ group: root
+ mode: 0644
+ notify: Enable noswap service
+
- name: Configure short hostname
ansible.builtin.hostname:
name: "{{ inventory_hostname_short }}"