logrotate-config: | logrotate-config: | ||||
file.managed: | file.managed: | ||||
- name: {{ logrotate.conf_file }} | - name: {{ logrotate.conf_file }} | ||||
- source: salt://logrotate/files/{{ salt['grains.get']('os_family') }}/logrotate.conf | |||||
- source: salt://logrotate/templates/logrotate.conf.tmpl | |||||
- template: jinja | - template: jinja | ||||
- user: {{ salt['pillar.get']('logrotate:config:user', logrotate.user) }} | - user: {{ salt['pillar.get']('logrotate:config:user', logrotate.user) }} | ||||
- group: {{ salt['pillar.get']('logrotate:config:group', logrotate.group) }} | - group: {{ salt['pillar.get']('logrotate:config:group', logrotate.group) }} |
user: root | user: root | ||||
group: root | group: root | ||||
service: cron | service: cron | ||||
login_records_jobs: True | |||||
default_config: | |||||
weekly: True | |||||
rotate: 4 | |||||
create: True | |||||
# 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 | |||||
} |
# 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 |
# 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. |
# 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 |
# -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||
# vim: ft=jinja | # vim: ft=jinja | ||||
{% import_yaml 'logrotate/defaults.yaml' as default_settings %} | |||||
{% set os_family_map = salt['grains.filter_by']({ | {% set os_family_map = salt['grains.filter_by']({ | ||||
'Arch': { | |||||
'service': 'logrotate.timer', | |||||
'default_config': { | |||||
'tabooext': '+ .pacorig .pacnew .pacsave', | |||||
}, | |||||
}, | |||||
'RedHat': { | 'RedHat': { | ||||
'service': 'crond', | 'service': 'crond', | ||||
'default_config': { | |||||
'dateext': True, | |||||
}, | |||||
}, | }, | ||||
'Arch': { | |||||
'service': 'logrotate.timer', | |||||
'Suse': { | |||||
'login_records_jobs': False, | |||||
'default_config': { | |||||
'dateext': True, | |||||
'compresscmd': '/usr/bin/xz', | |||||
'uncompresscmd': '/usr/bin/xzdec', | |||||
}, | |||||
}, | }, | ||||
}, | }, | ||||
grain="os_family", | grain="os_family", | ||||
merge=salt['pillar.get']('logrotate:lookup')) | |||||
merge=salt['pillar.get']('logrotate:lookup')) or {} | |||||
%} | |||||
{% 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_family_map) %} | |||||
{% do default_settings.logrotate.update(os_map) %} | |||||
{% set logrotate = salt['pillar.get']( | {% set logrotate = salt['pillar.get']( | ||||
'logrotate', | 'logrotate', |
{%- 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 |