Manages logrotate config and include dir. | Manages logrotate config and include dir. | ||||
``logrotate.install`` | |||||
--------------------- | |||||
Installs the logrotate package and its dependencies. | |||||
``logrotate.jobs`` | ``logrotate.jobs`` | ||||
------------------ | ------------------ | ||||
Create custom job for logrotate. | Create custom job for logrotate. | ||||
``logrotate.service`` | |||||
--------------------- | |||||
Manages the startup and running state of the logrotate service. |
include: | include: | ||||
- logrotate | - logrotate | ||||
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) }} | ||||
- mode: {{ salt['pillar.get']('logrotate:config:mode', '644') }} | - mode: {{ salt['pillar.get']('logrotate:config:mode', '644') }} | ||||
- require: | |||||
- pkg: logrotate | |||||
logrotate-directory: | |||||
file.directory: | |||||
- name: {{ logrotate.include_dir }} | |||||
- user: {{ salt['pillar.get']('logrotate:config:user', logrotate.user) }} | |||||
- group: {{ salt['pillar.get']('logrotate:config:group', logrotate.group) }} | |||||
- mode: 755 | |||||
- makedirs: True | |||||
# -*- coding: utf-8 -*- | |||||
# vim: ft=yaml | |||||
logrotate: | |||||
pkg: logrotate | |||||
conf_file: '/etc/logrotate.conf' | |||||
include_dir: '/etc/logrotate.d' | |||||
user: root | |||||
group: root | |||||
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 |
{% from "logrotate/map.jinja" import logrotate with context %} | |||||
logrotate: | |||||
pkg.installed: | |||||
- name: {{ logrotate.pkg|json }} | |||||
service.running: | |||||
- name: {{ logrotate.service }} | |||||
- enable: True | |||||
logrotate_directory: | |||||
file.directory: | |||||
- name: {{ logrotate.include_dir }} | |||||
- user: {{ salt['pillar.get']('logrotate:config:user', logrotate.user) }} | |||||
- group: {{ salt['pillar.get']('logrotate:config:group', logrotate.group) }} | |||||
- mode: 755 | |||||
- makedirs: True | |||||
- require: | |||||
- pkg: logrotate | |||||
# -*- coding: utf-8 -*- | |||||
# vim: ft=sls | |||||
include: | |||||
- logrotate.install | |||||
- logrotate.config | |||||
- logrotate.service |
# -*- coding: utf-8 -*- | |||||
# vim: ft=sls | |||||
{% from "logrotate/map.jinja" import logrotate with context %} | |||||
logrotate-pkg: | |||||
pkg.installed: | |||||
- name: {{ logrotate.pkg }} |
include: | include: | ||||
- logrotate | - logrotate | ||||
{% for key,value in jobs.items() %} | |||||
logrotate_{{key}}: | |||||
{% for key, value in jobs.items() %} | |||||
logrotate-{{ key }}: | |||||
file.managed: | file.managed: | ||||
- name: {{ logrotate.include_dir }}/{{ key.split("/")[-1] }} | - name: {{ logrotate.include_dir }}/{{ key.split("/")[-1] }} | ||||
- source: salt://logrotate/templates/job.tmpl | - source: salt://logrotate/templates/job.tmpl | ||||
- group: {{ salt['pillar.get']('logrotate:config:group', logrotate.group) }} | - group: {{ salt['pillar.get']('logrotate:config:group', logrotate.group) }} | ||||
- mode: {{ salt['pillar.get']('logrotate:config:mode', '644') }} | - mode: {{ salt['pillar.get']('logrotate:config:mode', '644') }} | ||||
- require: | - require: | ||||
- pkg: logrotate | |||||
- pkg: logrotate-pkg | |||||
- context: | - context: | ||||
{% if value is mapping %} | {% if value is mapping %} | ||||
path: {{ value.get('path', []) }} | path: {{ value.get('path', []) }} |
{% set logrotate = salt['grains.filter_by']({ | |||||
'RedHat': { | |||||
'pkg' : 'logrotate', | |||||
'service' : 'crond', | |||||
'conf_file' : '/etc/logrotate.conf', | |||||
'include_dir' : '/etc/logrotate.d', | |||||
'user' : 'root', | |||||
'group' : 'root', | |||||
# -*- coding: utf-8 -*- | |||||
# vim: ft=jinja | |||||
{% import_yaml 'logrotate/defaults.yaml' as default_settings %} | |||||
{% set os_family_map = salt['grains.filter_by']({ | |||||
'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', | |||||
}, | |||||
}, | |||||
}, | }, | ||||
'ScientificLinux': { | |||||
'pkg' : 'logrotate', | |||||
'service' : 'crond', | |||||
'conf_file' : '/etc/logrotate.conf', | |||||
'include_dir' : '/etc/logrotate.d', | |||||
'user' : 'root', | |||||
'group' : 'root', | |||||
grain="os_family", | |||||
merge=salt['pillar.get']('logrotate:lookup')) or {} | |||||
%} | |||||
{% set os_map = salt['grains.filter_by']({ | |||||
'Ubuntu': { | |||||
'default_config': { | |||||
'su': 'root syslog' | |||||
}, | |||||
}, | |||||
}, | }, | ||||
'Arch': { | |||||
'pkg' : 'logrotate', | |||||
'service' : 'logrotate.timer', | |||||
'conf_file' : '/etc/logrotate.conf', | |||||
'include_dir' : '/etc/logrotate.d', | |||||
'user' : 'root', | |||||
'group' : 'root', | |||||
}, | |||||
'Debian': { | |||||
'pkg' : 'logrotate', | |||||
'service' : 'cron', | |||||
'conf_file' : '/etc/logrotate.conf', | |||||
'include_dir' : '/etc/logrotate.d', | |||||
'user' : 'root', | |||||
'group' : 'root', | |||||
}, | |||||
'Suse': { | |||||
'pkg' : 'logrotate', | |||||
'service' : 'cron', | |||||
'conf_file' : '/etc/logrotate.conf', | |||||
'include_dir' : '/etc/logrotate.d', | |||||
'user' : 'root', | |||||
'group' : 'root', | |||||
}, | |||||
}, merge=salt['pillar.get']('logrotate:lookup')) %} | |||||
grain="os", | |||||
merge=os_family_map) or {} | |||||
%} | |||||
{% set logrotate = salt['grains.filter_by']( | |||||
default_settings, | |||||
merge=os_map, | |||||
base='logrotate', | |||||
) | |||||
%} |
# -*- coding: utf-8 -*- | |||||
# vim: ft=sls | |||||
{% from "logrotate/map.jinja" import logrotate with context %} | |||||
include: | |||||
- logrotate.config | |||||
- logrotate.install | |||||
logrotate: | |||||
service.running: | |||||
- name: {{ logrotate.service }} | |||||
- enable: True | |||||
- require: | |||||
- pkg: logrotate-pkg | |||||
- file: logrotate-config | |||||
- file: logrotate-directory |
{%- from "logrotate/map.jinja" import logrotate with context -%} | |||||
{%- set config = salt['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 |
lookup: | lookup: | ||||
pkg: logrotate | pkg: logrotate | ||||
service: crond | service: crond | ||||
default_config: | |||||
weekly: True | |||||
rotate: 52 | |||||
create: True | |||||
compress: True | |||||
dateext: True | |||||
jobs: | jobs: | ||||
/tmp/var/log/mysql/error: | /tmp/var/log/mysql/error: | ||||
config: | config: |