Feature 1/path testing #2
|
@ -1,2 +1,9 @@
|
||||||
# ansible-logrotate-plusplus
|
# ansible-logrotate-plusplus
|
||||||
Ansible role which installs and configures logrotate
|
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)
|
||||||
|
|
||||||
|
|
85
defaults/main.yml
Normal file
85
defaults/main.yml
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
---
|
||||||
|
# List of global options. If this is empty the default options of the
|
||||||
|
# distribution are used.
|
||||||
|
logrotate_options: []
|
||||||
|
|
||||||
|
# Path to the include files
|
||||||
|
logrotate_include_dir: /etc/logrotate.d
|
||||||
|
|
||||||
|
# package name to install logrotate.
|
||||||
|
logrotate_package: logrotate
|
||||||
|
|
||||||
|
# Enable hourly rotation with cron.
|
||||||
|
logrotate_use_hourly_rotation: false
|
||||||
|
|
||||||
|
# logroate for wtmp
|
||||||
|
logrotate_wtmp:
|
||||||
|
logs:
|
||||||
|
- /var/log/wtmp
|
||||||
|
options:
|
||||||
|
- missingok
|
||||||
|
- monthly
|
||||||
|
- create 0664 root utmp
|
||||||
|
- rotate 1
|
||||||
|
|
||||||
|
# logroate for btmp
|
||||||
|
logrotate_btmp:
|
||||||
|
logs:
|
||||||
|
- /var/log/btmp
|
||||||
|
options:
|
||||||
|
- missingok
|
||||||
|
- monthly
|
||||||
|
- create 0660 root utmp
|
||||||
|
- rotate 1
|
||||||
|
|
||||||
|
# More log files can be added that will log rotate.
|
||||||
|
# An example of multiple log rotate applications with available settings:
|
||||||
|
# logrotate_applications:
|
||||||
|
# - name: name-your-log-rotate-application
|
||||||
|
# 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
|
32
meta/main.yml
Normal file
32
meta/main.yml
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
author: 'stationgroup'
|
||||||
|
description: |
|
||||||
|
Ansible role for installings and configuring lograte on Linux, deploying a list of defaults only if the
|
||||||
|
logfiles are present on the system.
|
||||||
|
license: MIT
|
||||||
|
min_ansible_version: 2.8
|
||||||
|
platforms:
|
||||||
|
- name: EL
|
||||||
|
versions:
|
||||||
|
- 6
|
||||||
|
- 7
|
||||||
|
- name: Fedora
|
||||||
|
versions:
|
||||||
|
- 29
|
||||||
|
- name: Ubuntu
|
||||||
|
versions:
|
||||||
|
- bionic
|
||||||
|
- cosmic
|
||||||
|
- disco
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- jessie
|
||||||
|
- stretch
|
||||||
|
- buster
|
||||||
|
|
||||||
|
galaxy_tags:
|
||||||
|
- system
|
||||||
|
- logrotate
|
||||||
|
- log
|
||||||
|
- rotate
|
22
tasks/create-logrotate-application-configuration-files.yml
Normal file
22
tasks/create-logrotate-application-configuration-files.yml
Normal 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
|
58
tasks/main.yml
Normal file
58
tasks/main.yml
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
---
|
||||||
|
- name: add OS specific variables
|
||||||
|
include_vars: '{{ loop_vars }}'
|
||||||
|
with_first_found:
|
||||||
|
- files:
|
||||||
|
- '{{ distribution }}-{{ distribution_version }}.yml'
|
||||||
|
- '{{ distribution }}-{{ distribution_major_version }}.yml'
|
||||||
|
- '{{ distribution }}.yml'
|
||||||
|
- '{{ ansible_os_family }}.yml'
|
||||||
|
- '{{ ansible_system }}.yml'
|
||||||
|
- 'defaults.yml'
|
||||||
|
paths:
|
||||||
|
- 'vars'
|
||||||
|
loop_control:
|
||||||
|
loop_var: loop_vars
|
||||||
|
vars:
|
||||||
|
distribution: '{{ ansible_distribution }}'
|
||||||
|
distribution_version: '{{ ansible_distribution_version }}'
|
||||||
|
distribution_major_version: '{{ ansible_distribution_major_version }}'
|
||||||
|
tags:
|
||||||
|
- configuration
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- name: 'install logrotate packages'
|
||||||
|
become: true
|
||||||
|
package:
|
||||||
|
name: '{{ logrotate_package }}'
|
||||||
|
state: present
|
||||||
|
register: register_install_package
|
||||||
|
until: register_install_package is succeeded
|
||||||
|
retries: 3
|
||||||
|
tags:
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- name: 'create logrotate configuration file'
|
||||||
|
become: true
|
||||||
|
template:
|
||||||
|
src: 'etc/logrotate.conf.j2'
|
||||||
|
dest: '/etc/logrotate.conf'
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
tags:
|
||||||
|
- configuration
|
||||||
|
|
||||||
|
- name: 'create logrotate application configuration files'
|
||||||
|
include_tasks: create-logrotate-application-configuration-files.yml
|
||||||
|
loop: '{{ logrotate_applications }}'
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.name }}"
|
||||||
|
tags:
|
||||||
|
- configuration
|
||||||
|
|
||||||
|
- name: Symlink for hourly rotation
|
||||||
|
file:
|
||||||
|
path: "/etc/cron.hourly/logrotate"
|
||||||
|
src: "/etc/cron.daily/logrotate"
|
||||||
|
state: "{{ 'link' if logrotate_use_hourly_rotation else 'absent' }}"
|
30
templates/etc/logrotate.conf.j2
Normal file
30
templates/etc/logrotate.conf.j2
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
|
|
||||||
|
# see "man logrotate" for details
|
||||||
|
{% if logrotate_options | length > 0 %}
|
||||||
|
{% for option in logrotate_options %}
|
||||||
|
{{ option }}
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
{% for option in logrotate_distribution_options | default([]) %}
|
||||||
|
{{ option }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# packages drop log rotation information into this directory
|
||||||
|
include {{ logrotate_include_dir }}
|
||||||
|
|
||||||
|
# no packages own wtmp, or btmp -- we'll rotate them here
|
||||||
|
{{ logrotate_wtmp.logs | join(" ") }} {
|
||||||
|
{% for option in logrotate_wtmp.options %}
|
||||||
|
{{ option }}
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
|
||||||
|
{{ logrotate_btmp.logs | join(" ") }} {
|
||||||
|
{% for option in logrotate_btmp.options %}
|
||||||
|
{{ option }}
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
|
||||||
|
# system-specific logs may be configured here
|
35
templates/etc/logrotate.d/application.j2
Normal file
35
templates/etc/logrotate.d/application.j2
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
|
|
||||||
|
{{ item.logs | join(" ") }} {
|
||||||
|
{% for option in item.options %}
|
||||||
|
{{ option }}
|
||||||
|
{% endfor %}
|
||||||
|
{% if item.postrotate|default([]) %}
|
||||||
|
postrotate
|
||||||
|
{% for line in item.postrotate %}
|
||||||
|
{{ line }}
|
||||||
|
{% endfor %}
|
||||||
|
endscript
|
||||||
|
{% endif %}
|
||||||
|
{% if item.preremove|default([]) %}
|
||||||
|
preremove
|
||||||
|
{% for line in item.preremove %}
|
||||||
|
{{ line }}
|
||||||
|
{% endfor %}
|
||||||
|
endscript
|
||||||
|
{% endif %}
|
||||||
|
{% if item.lastaction|default([]) %}
|
||||||
|
lastaction
|
||||||
|
{% for line in item.lastaction %}
|
||||||
|
{{ line }}
|
||||||
|
{% endfor %}
|
||||||
|
endscript
|
||||||
|
{% endif %}
|
||||||
|
{% if item.firstaction|default([]) %}
|
||||||
|
firstaction
|
||||||
|
{% for line in item.firstaction %}
|
||||||
|
{{ line }}
|
||||||
|
{% endfor %}
|
||||||
|
endscript
|
||||||
|
{% endif %}
|
||||||
|
}
|
9
vars/CentOS.yml
Normal file
9
vars/CentOS.yml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
# vars file for arillso.logrotate
|
||||||
|
|
||||||
|
# List of global options for the different systems.
|
||||||
|
logrotate_distribution_options:
|
||||||
|
- weekly
|
||||||
|
- rotate 4
|
||||||
|
- create
|
||||||
|
- dateext
|
9
vars/Debian.yml
Normal file
9
vars/Debian.yml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
# vars file for arillso.logrotate
|
||||||
|
|
||||||
|
# List of global options for the different systems.
|
||||||
|
logrotate_distribution_options:
|
||||||
|
- weekly
|
||||||
|
- rotate 4
|
||||||
|
- create
|
||||||
|
- dateext
|
9
vars/RedHat.yml
Normal file
9
vars/RedHat.yml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
# vars file for arillso.logrotate
|
||||||
|
|
||||||
|
# List of global options for the different systems.
|
||||||
|
logrotate_distribution_options:
|
||||||
|
- weekly
|
||||||
|
- rotate 4
|
||||||
|
- create
|
||||||
|
- dateext
|
10
vars/Ubuntu.yml
Normal file
10
vars/Ubuntu.yml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
# vars file for arillso.logrotate
|
||||||
|
|
||||||
|
# List of global options for the different systems.
|
||||||
|
logrotate_distribution_options:
|
||||||
|
- weekly
|
||||||
|
- rotate 4
|
||||||
|
- create
|
||||||
|
- dateext
|
||||||
|
- su root syslog
|
Loading…
Reference in a new issue