Я пытаюсь изменить конфигурацию rsyslog logrotate, используя Ansible, но при запуске задачи:
- 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_scripts:
- name: rsyslog
path:
- "/var/log/syslog.log"
- "/var/log/daemon.log"
- "/var/log/kern.log"
- "/var/log/mail.log"
- "/var/log/user.log"
- "/var/log/lpr.log"
- "/var/log/auth.log"
- "/var/log/cron.log"
- "/var/log/debug"
- "/var/log/messages"
options:
- daily
- missingok
- maxsize 100M
- rotate 14
- compress
- compresscmd /bin/bzip2
- compressoptions -4
- compressext .bz2
- notifempty
Я получаю этот неправильный формат:
['/var/log/syslog.log', '/var/log/daemon.log', '/var/log/kern.log', '/var/log/mail.log', '/var/log/user.log', '/var/log/lpr.log', '/var/log/auth.log', '/var/log/cron.log', '/var/log/debug', '/var/log/messages'] {
daily
missingok
maxsize 100M
rotate 14
compress
compresscmd /bin/bzip2
compressoptions -4
compressext .bz2
notifempty
}
Это шаблон, который я использовал для всех своих сценариев logrotate (nginx, php и т. д.), но он не работает должным образом для rsyslog.
{{ 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 -%}
}
Как правильно передать список путей, чтобы получить этот эффект?
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
daily
missingok
maxsize 100M
rotate 14
compress
compresscmd /bin/bzip2
compressoptions -4
compressext .bz2
notifempty
}