ansible
∞
I’m using Ansible to manage a small fleet of Raspberry Pis. I’d been using the copy
module to set a value in /sys
:
- name: Enable compressed swap now (with zsmalloc)
become: true
ansible.builtin.copy:
content: zsmalloc
dest: /sys/module/zswap/parameters/zpool
unsafe_writes: true
But that always reports that the file changed, even if it already had that value. Today I got the lineinfile
module to update the value. This only says the value changed when it actually did:
- name: Enable compressed swap now (with zsmalloc)
become: true
ansible.builtin.lineinfile:
path: /sys/module/zswap/parameters/zpool
regexp: "^(?!zsmalloc).*$"
line: zsmalloc
unsafe_writes: true
Since these “files” only have one line, this uses regexp
to see if that line already matches the expected value. If so, it moves on. If not, it writes the new value.
Note: unsafe_writes: true
is there because you can’t write arbitrary filenames into /sys
and then mv
them into place. You have to write directly to the target “file”.