1
0
Fork 0

Add support for default logrotate options

This commit is contained in:
Gilles Dartiguelongue 2017-02-14 14:23:00 +01:00
parent 0846ae41e3
commit 98e6f6a909
8 changed files with 109 additions and 143 deletions

View File

@ -6,7 +6,7 @@ include:
logrotate-config:
file.managed:
- name: {{ logrotate.conf_file }}
- source: salt://logrotate/files/{{ salt['grains.get']('os_family') }}/logrotate.conf
- source: salt://logrotate/templates/logrotate.conf.tmpl
- template: jinja
- user: {{ salt['pillar.get']('logrotate:config:user', logrotate.user) }}
- group: {{ salt['pillar.get']('logrotate:config:group', logrotate.group) }}

View File

@ -8,4 +8,9 @@ logrotate:
user: root
group: root
service: cron
login_records_jobs: True
default_config:
weekly: True
rotate: 4
create: True

View File

@ -1,38 +0,0 @@
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# restrict maximum size of log files
#size 20M
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# Logs are moved into directory for rotation
# olddir /var/log/archive
# Ignore pacman saved files
tabooext + .pacorig .pacnew .pacsave
# Arch packages drop log rotation information into this directory
include /etc/logrotate.d
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}

View File

@ -1,38 +0,0 @@
# see "man logrotate" for details
# rotate log files weekly
weekly
{% if grains['os'] == "Ubuntu" %}
# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog
{% endif %}
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here

View File

@ -1,35 +0,0 @@
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.

View File

@ -1,26 +0,0 @@
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# comment these to switch compression to use gzip or another
# compression scheme
compresscmd /usr/bin/xz
uncompresscmd /usr/bin/xzdec
# former versions had to have the compressext set accordingly
#compressext .xz
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

View File

@ -1,18 +1,46 @@
# -*- coding: utf-8 -*-
# vim: ft=jinja
{% import_yaml 'logrotate/defaults.yaml' as default_settings %}
{% set os_family_map = salt['grains.filter_by']({
'RedHat': {
'service': 'crond',
},
'Arch': {
'service': 'logrotate.timer',
'default_config': {
'tabooext': '+ .pacorig .pacnew .pacsave',
},
},
'RedHat': {
'service': 'crond',
'default_config': {
'dateext': True,
},
},
'Suse': {
'login_records_jobs': False,
'default_config': {
'dateext': True,
'compresscmd': '/usr/bin/xz',
'uncompresscmd': '/usr/bin/xzdec',
},
},
},
grain="os_family",
merge=salt['pillar.get']('logrotate:lookup'))
merge=salt['pillar.get']('logrotate:lookup')) or {}
%}
{% do default_settings.logrotate.update(os_family_map) %}
{% set os_map = salt['grains.filter_by']({
'Ubuntu': {
'default_config': {
'su': 'root syslog'
},
},
},
grain="os",
merge=os_family_map) or {}
%}
{% do default_settings.logrotate.update(os_map) %}
{% set logrotate = salt['pillar.get'](
'logrotate',

View File

@ -0,0 +1,70 @@
{%- from "logrotate/map.jinja" import logrotate with context -%}
{%- set config = pillar.get('logrotate:default_config', logrotate.default_config) -%}
{%- set processed_parameters = [] -%}
{%- macro set_parameter(parameter, default=None) -%}
{%- set value = config.get(parameter, default) -%}
{%- if value is not none %}
{%- if value is sameas true -%}
{{ parameter }}
{%- elif value is sameas false -%}
no{{ parameter }}
{%- elif value is string or value is number -%}
{{ parameter }} {{ value }}
{%- else -%}
{{ value }}
{%- endif %}
{%- do processed_parameters.append(parameter) %}
{%- endif %}
{%- endmacro -%}
# Managed by saltstack
#
# See "man logrotate" for details.
# log files rotation period
{% for period in ['hourly', 'daily', 'weekly', 'yearly'] -%}
{{ set_parameter(period) }}
{%- endfor %}
# keep x periods worth of backlogs
{{ set_parameter('rotate', 4) }}
# create new (empty) log files after rotating old ones
{{ set_parameter('create', True) }}
# use date as a suffix of the rotated file
{{ set_parameter('dateext', False) }}
# change this if you want your log files compressed
{{ set_parameter('compress', False) }}
{#- Accept arbitrary parameters #}
{%- for parameter in config %}
{%- if parameter not in processed_parameters %}
{{ set_parameter(parameter) }}
{%- endif %}
{%- endfor %}
# packages drop log rotation information into this directory
include {{ logrotate.include_dir }}
{% if logrotate.login_records_jobs -%}
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
{%- endif %}
# system-specific logs may be configured here