57c88a8140
* https://freenode.logbot.info/saltstack-formulas/20200506#c3811885-c3812572 * Avoid `defaults.merge` * Send template values by `context`, to avoid: ```python ID: logrotate-config Function: file.managed Name: /etc/logrotate.conf Result: False Comment: An exception occurred in this state: Traceback (most recent call last): File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/templates.py", line 394, in render_jinja_tmpl output = template.render(**decoded_context) File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/environment.py", line 1008, in render return self.environment.handle_exception(exc_info, True) File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/environment.py", line 780, in handle_exception reraise(exc_type, exc_value, tb) File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/_compat.py", line 37, in reraise raise value.with_traceback(tb) File "<template>", line 1, in top-level template code File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/jinja.py", line 193, in get_source raise TemplateNotFound(template) jinja2.exceptions.TemplateNotFound: logrotate/map.jinja During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/var/tmp/.root_08c4d3_salt/pyall/salt/state.py", line 1981, in call **cdata['kwargs']) File "/var/tmp/.root_08c4d3_salt/pyall/salt/loader.py", line 1977, in wrapper return f(*args, **kwargs) File "/var/tmp/.root_08c4d3_salt/pyall/salt/states/file.py", line 3037, in managed **kwargs File "/var/tmp/.root_08c4d3_salt/pyall/salt/modules/file.py", line 4846, in check_managed_changes **kwargs) File "/var/tmp/.root_08c4d3_salt/pyall/salt/modules/file.py", line 4287, in get_managed **kwargs) File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/templates.py", line 169, in render_tmpl output = render_str(tmplstr, context, tmplpath) File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/templates.py", line 443, in render_jinja_tmpl trace=tracestr) salt.exceptions.SaltRenderError: Jinja error: logrotate/map.jinja Traceback (most recent call last): File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/templates.py", line 394, in render_jinja_tmpl output = template.render(**decoded_context) File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/environment.py", line 1008, in render return self.environment.handle_exception(exc_info, True) File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/environment.py", line 780, in handle_exception reraise(exc_type, exc_value, tb) File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/_compat.py", line 37, in reraise raise value.with_traceback(tb) File "<template>", line 1, in top-level template code File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/jinja.py", line 193, in get_source raise TemplateNotFound(template) jinja2.exceptions.TemplateNotFound: logrotate/map.jinja ; line 1 --- {%- 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) -%} [...] ```
69 lines
1.7 KiB
Cheetah
69 lines
1.7 KiB
Cheetah
{%- 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
|