Add check to deploy config if log exists

Role will now test if a log exist (and hence the application exists
    on the host before writing a logrotate config to the server.
This commit is contained in:
Serge van Ginderachter 2020-09-17 22:23:16 +02:00
parent b0e5245e4e
commit 82d5bd7d16
No known key found for this signature in database
GPG key ID: 3148E9B9232D65E5
5 changed files with 90 additions and 32 deletions

View file

@ -1,2 +1,9 @@
# ansible-logrotate-plusplus
Ansible role which installs and configures logrotate
It can test if paths exist before writing a logrotate config to the server.
Load the roles default vars with custom paths and per path parameters, and run the playbook across a dynamic
infrastructure and only write logerotate rules to the appropriate system with the correct paths present.
This project was based of https://github.com/arillso/ansible.logrotate 1.5.2
(https://github.com/arillso/ansible.logrotate/commit/038649f7933c21ba9f1f2c8363bfb4d49aaf46f2)

View file

@ -36,14 +36,50 @@ logrotate_btmp:
# An example of multiple log rotate applications with available settings:
# logrotate_applications:
# - name: name-your-log-rotate-application
# definitions:
# - logs:
# - /var/log/apt/term.log
# - /var/log/apt/history.log
# options:
# - rotate 12
# - monthly
# - missingok
# - notifempty
# - compress
logrotate_applications: []
# logs:
# - /var/log/apt/term.log
# - /var/log/apt/history.log
# options:
# - rotate 12
# - monthly
# - missingok
# - notifempty
# - compress
logrotate_applications:
- name: nextcloud-snap-apache-php_errors
logs:
- /var/snap/nextcloud/current/apache/logs/*.log
options:
- daily
- compress
- rotate 6
- missingok
- copytruncate
- delaycompress
- name: nextcloud-snap-apache-error_log"
logs:
- /var/snap/nextcloud/current/apache/logs/error_log
options:
- daily
- compress
- rotate 6
- missingok
- copytruncate
- delaycompress
- name: custom
logs:
- /var/log/custom/*_log
options:
- daily
- compress
- rotate 6
- name : dpkg
logs:
- /var/log/dpkg.log
options:
- daily
- compress
- rotate 6

View file

@ -0,0 +1,22 @@
---
- name: 'check if there exist log files for {{ item.name }}'
shell:
cmd: "ls -l {{ item.logs|join(' ') }}"
changed_when: false
register: _available_logs
check_mode: false
failed_when: false
tags:
- configuration
- name: 'create logrotate configuration file for {{ item.name }}'
become: true
template:
src: 'etc/logrotate.d/application.j2'
dest: '/etc/logrotate.d/{{ item.name }}'
owner: root
group: root
mode: 0644
when: _available_logs.stdout_lines|length() > 0
tags:
- configuration

View file

@ -44,15 +44,10 @@
- configuration
- name: 'create logrotate application configuration files'
become: true
template:
src: 'etc/logrotate.d/application.j2'
dest: '/etc/logrotate.d/{{ item.name }}'
owner: root
group: root
mode: 0644
with_items:
- '{{ logrotate_applications }}'
include_tasks: create-logrotate-application-configuration-files.yml
loop: '{{ logrotate_applications }}'
loop_control:
label: "{{ item.name }}"
tags:
- configuration

View file

@ -1,37 +1,35 @@
{{ ansible_managed | comment }}
{% for definition in item.definitions %}
{{ definition.logs | join(" ") }} {
{% for option in definition.options %}
{{ item.logs | join(" ") }} {
{% for option in item.options %}
{{ option }}
{% endfor %}
{% if definition.postrotate|default([]) %}
{% if item.postrotate|default([]) %}
postrotate
{% for line in definition.postrotate %}
{% for line in item.postrotate %}
{{ line }}
{% endfor %}
endscript
{% endif %}
{% if definition.preremove|default([]) %}
{% if item.preremove|default([]) %}
preremove
{% for line in definition.preremove %}
{% for line in item.preremove %}
{{ line }}
{% endfor %}
endscript
{% endif %}
{% if definition.lastaction|default([]) %}
{% if item.lastaction|default([]) %}
lastaction
{% for line in definition.lastaction %}
{% for line in item.lastaction %}
{{ line }}
{% endfor %}
endscript
{% endif %}
{% if definition.firstaction|default([]) %}
{% if item.firstaction|default([]) %}
firstaction
{% for line in definition.firstaction %}
{% for line in item.firstaction %}
{{ line }}
{% endfor %}
endscript
{% endif %}
}
{% endfor %}