--- - name: ram | Ensure Debian family ansible.builtin.assert: that: ansible_os_family == "Debian" fail_msg: "This role only supports Debian/Proxmox systems." - name: ram | Calculate log2ram size ansible.builtin.set_fact: _total_ram_mb: "{{ ansible_memtotal_mb }}" _calculated_size_mb: "{{ (ansible_memtotal_mb * log2ram_ram_percent / 100) | int }}" log2ram_size_mb: >- {{ [log2ram_min_size_mb, [_calculated_size_mb, log2ram_max_size_mb] | 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: Installation Logic 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 when: download_archive.changed # Configure log2ram - name: ram | Configure log2ram size ansible.builtin.lineinfile: path: /etc/log2ram.conf regexp: '^#?SIZE=' line: "SIZE={{ log2ram_size }}" backup: yes notify: Restart log2ram - name: ram | Enable rsync sync ansible.builtin.lineinfile: path: /etc/log2ram.conf 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 }}" }