Some checks failed
ansible-lint / Ansible Lint (push) Failing after 8s
Gitleaks Scan / gitleaks (push) Successful in 6s
Markdown Lint / markdown-lint (push) Successful in 5s
ai-reviews / Review PR (pull_request) Successful in 43s
ansible-lint / Ansible Lint (pull_request) Failing after 6s
Gitleaks Scan / gitleaks (pull_request) Successful in 4s
Markdown Lint / markdown-lint (pull_request) Successful in 5s
Replaced legacy patches with a single logrotate reload command. Enhanced logrotate configuration to dynamically handle multiple files and include improved settings and notifications.
111 lines
2.9 KiB
YAML
111 lines
2.9 KiB
YAML
---
|
|
|
|
- name: logrotate | Configure all main Proxmox logs
|
|
|
|
vars:
|
|
proxmox_logrotate_files:
|
|
- /etc/logrotate.conf
|
|
- /etc/logrotate.d/pve
|
|
- /etc/logrotate.d/pve-firewall
|
|
loop: "{{ proxmox_logrotate_files }}"
|
|
loop_control:
|
|
loop_var: item
|
|
|
|
block:
|
|
|
|
- name: Check if {{ item }} exists
|
|
ansible.builtin.stat:
|
|
path: "{{ item }}"
|
|
register: logrotate_file
|
|
|
|
- name: Configure {{ item }}
|
|
block:
|
|
|
|
- name: Backup {{ item }} once
|
|
ansible.builtin.copy:
|
|
src: "{{ item }}"
|
|
dest: "{{ item }}.original"
|
|
remote_src: true
|
|
args:
|
|
creates: "{{ item }}.original"
|
|
|
|
- name: Ensure daily rotation
|
|
ansible.builtin.replace:
|
|
path: "{{ item }}"
|
|
regexp: '^\s*weekly'
|
|
replace: 'daily'
|
|
notify: logrotate reload
|
|
|
|
- name: Set rotate (number of retained logs)
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ item }}"
|
|
regexp: '^(\s*rotate\s+).*'
|
|
line: ' rotate {{ proxmox_logrotate_rotate }}'
|
|
state: present
|
|
insertafter: '^\s*daily'
|
|
notify: logrotate reload
|
|
|
|
- name: Ensure maxsize is set
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ item }}"
|
|
regexp: '^(\s*maxsize\s+).*'
|
|
line: ' maxsize {{ proxmox_logrotate_maxsize }}'
|
|
state: present
|
|
insertafter: '^\s*rotate'
|
|
notify: logrotate reload
|
|
|
|
- name: Ensure Compress
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ item }}"
|
|
regexp: '^\s*compress\b'
|
|
line: ' compress'
|
|
state: present
|
|
insertafter: '^\s*maxsize'
|
|
notify: logrotate reload
|
|
|
|
- name: Ensure delaycompress
|
|
ansible.builtin.lineinfile:
|
|
path: "{{ item }}"
|
|
regexp: '^\s*delaycompress\b'
|
|
line: ' delaycompress'
|
|
state: present
|
|
insertafter: '^\s*compress'
|
|
notify: logrotate reload
|
|
|
|
when: logrotate_file.stat.exists
|
|
|
|
|
|
# only for logrotate.conf
|
|
|
|
- name: Uncomment dateext if commented
|
|
ansible.builtin.replace:
|
|
path: /etc/logrotate.conf
|
|
regexp: '^\s*#\s*(dateext)\b'
|
|
replace: '\1'
|
|
notify: logrotate reload
|
|
|
|
- name: Uncomment compress if commented
|
|
ansible.builtin.replace:
|
|
path: /etc/logrotate.conf
|
|
regexp: '^\s*#\s*(compress)\b'
|
|
replace: '\1'
|
|
notify: logrotate reload
|
|
|
|
- name: Ensure missingok is present
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/logrotate.conf
|
|
regexp: '^\s*missingok\b'
|
|
line: 'missingok'
|
|
state: present
|
|
insertafter: EOF
|
|
notify: logrotate reload
|
|
|
|
- name: Ensure notifempty is present
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/logrotate.conf
|
|
regexp: '^\s*notifempty\b'
|
|
line: 'notifempty'
|
|
state: present
|
|
insertafter: EOF
|
|
notify: logrotate reload
|