Skip to content
Snippets Groups Projects
Commit b47e36ac authored by Jörg Sachse's avatar Jörg Sachse
Browse files

feat: implement zwar swap (implements ND-2005)

parent 2fb0e395
No related branches found
No related tags found
No related merge requests found
Pipeline #3551 passed
[Unit]
Description=Swap with zram
After=multi-user.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/sbin/mkswap /dev/zram0
ExecStart=/sbin/swapon /dev/zram0
ExecStop=/sbin/swapoff /dev/zram0
[Install]
WantedBy=multi-user.target
...@@ -64,5 +64,11 @@ ...@@ -64,5 +64,11 @@
when: ansible_os_family == "Debian" when: ansible_os_family == "Debian"
changed_when: false changed_when: false
- name: restart zramswap
ansible.builtin.systemd:
name: "zramswap.service"
state: restarted
daemon_reload: true
- name: udev-Regel bekannt machen - name: udev-Regel bekannt machen
ansible.builtin.command: "udevadm control --reload" ansible.builtin.command: "udevadm control --reload"
--- ---
- name: check if swap is active - name: configure zram based swap (Debian)
ansible.builtin.command: swapon -s block:
register: swap_active - name: install zram
changed_when: false ansible.builtin.package:
name: "zram-tools"
state: latest
- name: configure zram
ansible.builtin.blockinfile:
path: "/etc/default/zramswap"
block: |
ALGO=lz4
PERCENT=50
notify: restart zramswap
when: ansible_os_family == "Debian"
# https://docs.ansible.com/ansible/latest/user_guide/playbooks_tests.html#testing-strings # RHEL part is based on https://www.techrepublic.com/article/how-to-enable-zram-rocky-linux/
- name: switch off swap (immediate result for running server, not reboot persistent) # Note: all that udev stuff from that guide doesn't work. We'll use CLI commands.
ansible.builtin.command: swapoff -va # More docu on zram at https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html
when: - name: configure zram based swap (RedHat)
- ansible_hostname is not search("validate") block:
- swap_active.stdout | length == 0 - name: disable swapping first, otherwise zram will not work
register: disable_swap ansible.builtin.command: "swapoff -a"
changed_when: disable_swap.stdout not in "swapoff LABEL=swap" changed_when: false
- name: switch off swap (no result for running server, reboot persistent)
ansible.posix.mount:
path: "none"
fstype: "swap"
state: "absent"
- name: switch off swap (no result for running server, reboot persistent) - name: load zram Kernel module
ansible.posix.mount: ansible.builtin.lineinfile:
path: "none" path: "/etc/modules-load.d/zram.conf"
fstype: "swap" create: true
state: "absent" line: "zram"
when: mode: "0644"
- ansible_hostname is not search("validate") # Use `zramctl -f` to show available zram devices.
- swap_active.stdout | length == 0 - name: configure zram Kernel module. This will create a zram device.
ansible.builtin.lineinfile:
path: "/etc/modprobe.d/zram.conf"
create: true
line: "options zram num_devices=1"
mode: "0644"
- name: find out if zram Kernel module has been loaded already
ansible.builtin.command: "lsmod"
register: kernel_modules
changed_when: false
- name: load zram Kernel module
ansible.builtin.command: "modprobe zram"
when: "not 'zram' in kernel_modules.stdout"
- name: find existing zram devices
ansible.builtin.command: "zramctl --noheadings"
register: "zram_devices"
changed_when: false
- name: setup zram device
ansible.builtin.command: "zramctl -a lzo -s {{ ( ansible_facts.memtotal_mb / 2 ) | round | int }}M /dev/zram0"
changed_when: false
- name: create SystemD unit directory
ansible.builtin.file:
path: "/usr/local/lib/systemd/system/"
state: directory
mode: "0755"
- name: create Systemd unit for zram
ansible.builtin.copy:
src: "usr/local/lib/systemd/system/zramswap.service"
dest: "/usr/local/lib/systemd/system/zramswap.service"
mode: "0644"
notify: restart zramswap
when: ansible_os_family == "RedHat"
- name: configure zram based swap (common)
block:
- name: start zram service
ansible.builtin.systemd:
name: "zramswap.service"
state: started
enabled: true
...@@ -112,9 +112,8 @@ ...@@ -112,9 +112,8 @@
import_tasks: configure_sudoers.yml import_tasks: configure_sudoers.yml
tags: [sudo] tags: [sudo]
- name: Disable swap - name: Configure swap
import_tasks: configure_swap.yml import_tasks: configure_swap.yml
when: ansible_hostname != "sdvlzavalidate"
tags: [swap, vm] tags: [swap, vm]
- name: sar konfigurieren - name: sar konfigurieren
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment