feat ✨: Add configuration options for log2ram and journald settings
This commit introduces new features that allow users to configure log2ram and journald settings. It includes handlers for log2ram, journald, and a task to configure RAM usage. Additionally, a new role is added for installing and configuring log2ram on Debian systems.
This commit is contained in:
@@ -31,3 +31,17 @@ proxmox_apt_languages:
|
|||||||
- "en"
|
- "en"
|
||||||
- "es"
|
- "es"
|
||||||
- "it"
|
- "it"
|
||||||
|
|
||||||
|
# Percentage of total RAM to allocate to log2ram
|
||||||
|
log2ram_ram_percent: 10
|
||||||
|
|
||||||
|
log2ram_min_size_mb: 128
|
||||||
|
log2ram_max_size_mb: 1024
|
||||||
|
|
||||||
|
# Journald RAM usage limit
|
||||||
|
journald_runtime_max_use: "100M"
|
||||||
|
|
||||||
|
# VM write frequency tuning
|
||||||
|
vm_dirty_ratio: 15
|
||||||
|
vm_dirty_background_ratio: 5
|
||||||
|
vm_swappiness: "{{ proxmox_swapiness }}"
|
||||||
|
|||||||
@@ -20,3 +20,17 @@
|
|||||||
name: logrotate
|
name: logrotate
|
||||||
state: restarted
|
state: restarted
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
|
- name: Restart log2ram
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: log2ram
|
||||||
|
state: restarted
|
||||||
|
enabled: yes
|
||||||
|
|
||||||
|
- name: Restart journald
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: systemd-journald
|
||||||
|
state: restarted
|
||||||
|
|
||||||
|
- name: Reload sysctl
|
||||||
|
ansible.builtin.command: sysctl --system
|
||||||
|
|||||||
@@ -39,3 +39,6 @@
|
|||||||
|
|
||||||
- name: Configure kernel panic auto-reboot
|
- name: Configure kernel panic auto-reboot
|
||||||
ansible.builtin.import_tasks: kernel.yml
|
ansible.builtin.import_tasks: kernel.yml
|
||||||
|
|
||||||
|
- name: Configure ram usage
|
||||||
|
ansible.builtin.import_tasks: ram.yml
|
||||||
|
|||||||
103
tasks/ram.yml
Normal file
103
tasks/ram.yml
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
---
|
||||||
|
- 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: ram | Extract log2ram
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
src: "/tmp/log2ram.tar.gz"
|
||||||
|
dest: "/tmp"
|
||||||
|
remote_src: yes
|
||||||
|
when: download_archive.changed
|
||||||
|
|
||||||
|
- 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
|
||||||
|
when: download_archive.changed
|
||||||
|
notify: Restart log2ram
|
||||||
|
|
||||||
|
# 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.builtin.copy:
|
||||||
|
dest: /etc/sysctl.d/99-proxmox-memory.conf
|
||||||
|
content: |
|
||||||
|
vm.swappiness = {{ vm_swappiness }}
|
||||||
|
vm.dirty_ratio = {{ vm_dirty_ratio }}
|
||||||
|
vm.dirty_background_ratio = {{ vm_dirty_background_ratio }}
|
||||||
|
mode: '0644'
|
||||||
|
notify: Reload sysctl
|
||||||
Reference in New Issue
Block a user