All checks were successful
ansible-lint / Ansible Lint (push) Successful in 12s
Gitleaks Scan / gitleaks (push) Successful in 5s
Markdown Lint / markdown-lint (push) Successful in 6s
ai-reviews / Review PR (pull_request) Successful in 14s
PR check / Gitleaks (pull_request) Successful in 4s
PR check / lint tests (pull_request) Successful in 15s
PR check / labeler (pull_request) Successful in 2s
PR check / handle_failures (pull_request) Has been skipped
PR check / handle_success (pull_request) Successful in 2s
Introduce a new step in the extraction process to ensure that log2ram is stopped before proceeding with the extraction, preventing potential data corruption or loss.
114 lines
3.1 KiB
YAML
114 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/tags/{{ log2ram_version }}.tar.gz
|
|
dest: /tmp/log2ram.tar.gz
|
|
mode: '0644'
|
|
register: download_archive
|
|
|
|
- name: ram | Logic to extract and install log2ram
|
|
when: download_archive.changed # noqa: no-handler
|
|
block:
|
|
- name: ram | Stop log2ram if present
|
|
ansible.builtin.systemd:
|
|
name: log2ram
|
|
state: stopped
|
|
become: true
|
|
failed_when: false
|
|
|
|
- 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-{{ log2ram_version }}"
|
|
# '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 }}" }
|