У меня проблема с настройкой logrotate с помощью Ansible.
Все нормально, когда у меня logrotate_scripts
с logrotates, где в файле logrotate есть только одна конфигурация, например, nginx
или php
.
Проблема заключается в том, что я хочу настроить rsyslog
logrotate, где более одной конфигурации (отдельно для syslog
и для остальных журналов, таких как deamon
и т. Д.).
Это задача:
- name: Setup logrotate.d scripts
template:
src: logrotate.d.j2
dest: "{{ logrotate_conf_dir }}{{ item.name }}"
with_items: "{{ logrotate_scripts }}"
when: logrotate_scripts is defined
Вот шаблон ( logrotate.d.j2 ), который работает только для одной конфигурации в файле (nginx case).
{{ item.path }} {
{% if item.options is defined -%}
{% for option in item.options -%}
{{ option }}
{% endfor -%}
{% endif %}
{%- if item.scripts is defined -%}
{%- for name, script in item.scripts.iteritems() -%}
{{ name }}
{{ script }}
endscript
{% endfor -%}
{% endif -%}
}
Это конфигурация:
logrotate_scripts:
- name: nginx
path: /var/log/nginx/*.log
option:
- daily
- missingok
- maxsize 100M
- rotate 14
- compress
- delaycompress
- name: rsyslog
path: /var/log/syslog
option:
- weekly
- missingok
- maxsize 10M
- rotate 35
paths: /var/log/deamon.log
options:
- weekly
- missingok
- maxsize 100M
- rotate 14
Так я перестраиваю шаблон, чтобы добавить две конфигурации в один файл, как в rsyslog.
{% for path in item.path -%}
{{ path }}
{% endfor %}
{
{% if item.options is defined -%}
{% for option in item.options -%}
{{ option }}
{% endfor -%}
{% endif %}
{%- if item.scripts is defined -%}
{%- for name, script in item.scripts.iteritems() -%}
{{ name }}
{{ script }}
endscript
{% endfor -%}
{% endif -%}
}
{% for paths in item.paths -%}
{{ paths }}
{% endfor %}
{
{% if item.option is defined -%}
{% for options in item.option -%}
{{ options }}
{% endfor -%}
{% endif %}
{%- if item.scripts is defined -%}
{%- for name, script in item.scripts.iteritems() -%}
{{ name }}
{{ script }}
endscript
{% endfor -%}
{% endif -%}
}
Проблема в том, работает для rsyslog
, но не срабатывает , когда есть только одна конфигурация, как в nginx
.
Любая идея, как мне перестроить шаблон или, может быть, я должен сделать это в совершенно другой способ?