Files
ansible_role_proxmox_provision/tasks/ram.yml
Jose bbb133a0a5
All checks were successful
ansible-lint / Ansible Lint (push) Successful in 12s
Gitleaks Scan / gitleaks (push) Successful in 4s
Markdown Lint / markdown-lint (push) Successful in 5s
Mark stale issues and pull requests / stale (push) Successful in 4s
refactor ♻️: Refactor log2ram size calculation for integer values and improve readability
This refactoring ensures that the log2ram size calculation always results in an integer value, enhancing precision. Additionally, it improves code readability by simplifying complex expressions.
2026-02-15 18:43:12 +01:00

109 lines
3.1 KiB
YAML

---
- name: ram | Ensure Debian family
ansible.builtin.assert:
that: ansible_os_family == "Debian"
fail_msg: "This role only supports Debian/Proxmox systems."
- name: ram | Gather only memory fact
ansible.builtin.setup:
filter: ansible_memtotal_mb
- name: ram | Calculate log2ram size
ansible.builtin.set_fact:
log2ram_size_mb: >-
{{
[
log2ram_min_size_mb | int,
[
(ansible_memtotal_mb | int * log2ram_ram_percent | int / 100) | int,
log2ram_max_size_mb | int
] | min
] | max
}}
- name: ram | Convert size to M format
ansible.builtin.set_fact:
log2ram_size: "{{ log2ram_size_mb }}M"
# - name: Install log2ram
- name: ram | Install dependencies
ansible.builtin.apt:
name:
- rsync
- curl
- ca-certificates
state: present
update_cache: yes
cache_valid_time: 3600 # Only run apt-get update if it hasn't run in the last hour
- name: ram | Download log2ram
ansible.builtin.get_url:
url: https://github.com/azlux/log2ram/archive/refs/heads/master.tar.gz
dest: /tmp/log2ram.tar.gz
# Adding a checksum ensures we only 'change' if the file is new/updated
checksum: "sha256:https://github.com/azlux/log2ram/archive/refs/heads/master.tar.gz.sha256"
mode: '0644'
register: download_archive
- name: ram | Logic to extract and install log2ram
when: download_archive.changed # noqa: no-handler
block:
- name: ram | Extract log2ram
ansible.builtin.unarchive:
src: "/tmp/log2ram.tar.gz"
dest: "/tmp"
remote_src: yes
- name: ram | Install log2ram
ansible.builtin.command: bash install.sh
args:
chdir: "/tmp/log2ram-master"
# 'creates' makes the command idempotent by checking for the binary
creates: /usr/local/bin/log2ram
notify: Restart log2ram
# Configure log2ram
- name: ram | Configure log2ram settings
ansible.builtin.lineinfile:
path: /etc/log2ram.conf
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
backup: yes
loop:
- { regexp: '^#?SIZE=', line: "SIZE={{ log2ram_size }}" }
- { regexp: '^#?USE_RSYNC=', line: "USE_RSYNC=true" }
notify: Restart log2ram
# Keep journald fully in RAM
- name: ram | Configure journald storage volatile
ansible.builtin.lineinfile:
path: /etc/systemd/journald.conf
regexp: '^#?Storage='
line: "Storage=volatile"
backup: yes
notify: Restart journald
- name: ram | Limit journald runtime size
ansible.builtin.lineinfile:
path: /etc/systemd/journald.conf
regexp: '^#?RuntimeMaxUse='
line: "RuntimeMaxUse={{ journald_runtime_max_use }}"
notify: Restart journald
# Enable log2ram on boot
- name: ram | Configure memory tuning sysctl
ansible.posix.sysctl:
name: "{{ item.name }}"
value: "{{ item.value }}"
state: present
sysctl_file: /etc/sysctl.d/99-proxmox-memory.conf
reload: yes
loop:
- { name: 'vm.swappiness', value: "{{ vm_swappiness }}" }
- { name: 'vm.dirty_ratio', value: "{{ vm_dirty_ratio }}" }
- { name: 'vm.dirty_background_ratio', value: "{{ vm_dirty_background_ratio }}" }