-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Provisioning a node on WSL fails when attempting to disable swap in the pf9-express playbook:
- name: Disable swap
command: swapoff -a
when: ansible_swaptotal_mb > 0
Results in:
TASK [disable-swap : Disable swap] *************************************************************************************
Tuesday 05 January 2021 11:32:54 -0500 (0:00:00.223) 0:00:04.179 *******
fatal: [localhost]: FAILED! => {"changed": true, "cmd": ["swapoff", "-a"], "delta": "0:00:00.001871", "end": "2021-01-05 11:32:54.833778", "msg": "non-zero return code", "rc": 255, "start": "2021-01-05 11:32:54.831907", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
This is because running sudo swapoff -a $? results in:
$ sudo swapoff -a $?
swapoff: 255: swapoff failed: No such file or directory
This is because even though there is no swap mounted in /etc/fstab:
$ cat /etc/fstab
LABEL=cloudimg-rootfs / ext4 defaults 0 0
Swap is provided by the WSL2 VM shared between all running WSL distros:
$ cat /proc/swaps
Filename Type Size Used Priority
/swap/file file 7340032 0 -2
The official way to disable swap on WSL2 is to set swap=off in %USERPROFILE%/.wslconfig.
The workaround for now is to simply comment out that step in the disable-swap role.
As discussed in #111 it can be tricky to detect if you are running in WSL, but it is possible.
There is a use case for being able to run a node on WSL for dev training purposes so it still may be worth addressing.
My first idea is to use a block here in the playbook to execute sudo swapoff -a with a rescue: that if cat /proc/version | grep -q 'microsoft' it will still then pass.