Skip to content

Creating a node on WSL fails in disable-swap.yml #112

@sirredbeard

Description

@sirredbeard

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions