Spec-Zone.ru › Ansible

Модуль community.general.logrotate — управление конфигурациями logrotate

Примечание

Этот модуль входит в коллекцию community.general (версия 12.6.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Чтобы установить её, используйте: ansible-galaxy collection install community.general. Для работы с этим модулем требуются дополнительные компоненты; подробности см. в разделе Требования.

Чтобы использовать модуль в плейбуке, укажите: community.general.logrotate.

Добавлено в community.general 12.5.0

  • Краткое описание
  • Требования
  • Параметры
  • Атрибуты
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Управление файлами конфигурации и настройками logrotate.
  • Создание, обновление и удаление конфигураций logrotate для приложений и служб.

Требования

Следующие требования должны быть выполнены на узле, на котором выполняется этот модуль.

  • logrotate >= 3.8.0

Параметры

Параметр

Комментарии

backup

boolean

добавлено в community.general 12.6.0

Создать резервную копию существующего файла конфигурации перед перезаписью.

Файл резервной копии создаётся в том же каталоге; к его имени добавляется суффикс с отметкой времени.

Варианты:

  • false
  • true ← (по умолчанию)

compress

boolean

Сжимать ротированные файлы журналов.

Варианты:

  • false
  • true

compress_options

string

Параметры, передаваемые программе сжатия.

Для compression_method=gzip используйте -9 для наилучшего сжатия и -1 для максимальной скорости.

Для compression_method=xz используйте -9 для наилучшего сжатия.

compression_method

string

Используемый метод сжатия.

Для xz и zstd требуется logrotate версии 3.18.0 или новее.

Варианты:

  • "gzip"
  • "bzip2"
  • "xz"
  • "zstd"
  • "lzma"
  • "lz4"

config_dir

path

Каталог, в котором хранятся конфигурации logrotate.

Для конфигураций пользователя рекомендуется использовать ~/.logrotate.d.

Перед использованием модуля этот каталог должен существовать.

По умолчанию: "/etc/logrotate.d"

copy

boolean

Копировать файл журнала, не усекая исходный файл.

Имеет приоритет над rename_copy и copy_truncate.

Варианты:

  • false
  • true

copy_truncate

boolean

Скопировать файл журнала, а затем усечь его на месте.

Полезно для приложений, которым нельзя сообщить о необходимости закрыть файл журнала.

Варианты:

  • false
  • true

create

string

После ротации создать новый файл журнала с указанными правами доступа.

Формат: mode owner group (например, 0640 root adm).

Укажите null или не задавайте параметр, чтобы использовать nocreate.

create_old_dir

boolean

Создать каталог old_dir, если он не существует.

Варианты:

  • false
  • true

date_ext

boolean

Использовать дату в качестве расширения ротированных файлов (в формате даты, заданном в date_format, вместо последовательных номеров).

Варианты:

  • false
  • true

date_format

string

Формат расширения даты.

Используется вместе с date_ext=true.

Спецификаторы формата: %Y — год, %m — месяц, %d — день, %s — секунды с начала эпохи.

date_yesterday

boolean

Использовать вчерашнюю дату для date_ext вместо сегодняшней.

Полезно при ротации журналов, охватывающих полночь.

Варианты:

  • false
  • true

delay_compress

boolean

Отложить сжатие предыдущего файла журнала до следующего цикла ротации.

Полезно для приложений, которые продолжают некоторое время записывать данные в старый файл журнала.

Варианты:

  • false
  • true

enabled

boolean

Определяет, должна ли конфигурация быть включена.

Если значение равно false, к файлу конфигурации добавляется расширение .disabled.

Варианты:

  • false
  • true

extension

string

Расширение для ротированных файлов журналов (включая точку).

Полезно при compress=false.

first_action

list / элементы=string

Команды, выполняемые один раз перед ротацией всех файлов журналов, соответствующих шаблону с подстановочными знаками.

include

path

Подключить дополнительные файлы конфигурации из указанного каталога.

last_action

list / элементы=string

Команды, выполняемые один раз после ротации всех файлов журналов, соответствующих шаблону с подстановочными знаками.

mail

string

Отправлять журналы на указанный адрес электронной почты при удалении.

Укажите null или не задавайте параметр, чтобы не отправлять журналы по почте.

mail_first

boolean

Отправлять только что созданный файл журнала, а не файл, срок хранения которого подходит к концу.

Варианты:

  • false
  • true

mail_last

boolean

Отправлять файл журнала, срок хранения которого подходит к концу (по умолчанию).

Варианты:

  • false
  • true

max_age

integer

Удалять ротированные журналы, возраст которых превышает указанное число дней.

max_size

string

Выполнять ротацию файла журнала при превышении указанного размера, но не чаще одного раза за rotation_period.

Формат: number[k|M|G] (например, 100M, 1G).

min_size

string

Выполнять ротацию файла журнала, только если его размер превысил указанное значение.

Формат: number[k|M|G] (например, 100M, 1G).

Используется вместе с ротацией по времени, чтобы не ротировать слишком маленькие файлы.

missing_ok

boolean

Не выдавать ошибку, если файл журнала отсутствует.

Варианты:

  • false
  • true

name

псевдонимы: config_name

string / обязательный

Имя конфигурации logrotate.

В config_dir будет создан файл с этим именем.

no_delay_compress

boolean

Противоположность delay_compress. Гарантирует немедленное сжатие.

Обратите внимание, что в logrotate no_delay_compress используется по умолчанию.

Варианты:

  • false
  • true

no_old_dir

boolean

Хранить ротированные журналы в том же каталоге, что и исходный журнал.

Варианты:

  • false
  • true

not_if_empty

boolean

Не выполнять ротацию пустого файла журнала.

Укажите false, чтобы ротировать даже пустые файлы журналов (эквивалент ifempty в logrotate).

Варианты:

  • false
  • true

old_dir

path

Перемещать ротированные журналы в указанный каталог.

paths

list / элементы=path

Список путей к файлам журналов или шаблонов для ротации.

Могут содержать подстановочные знаки (например, /var/log/app/*.log).

Обязательный параметр при создании новой конфигурации (state=present и файл конфигурации не существует).

Необязательный параметр при изменении существующей конфигурации (например, для включения или отключения).

post_rotate

list / элементы=string

Команды, выполняемые после ротации файла журнала.

Можно указать одну строку или список команд.

pre_remove

list / элементы=string

Команды, выполняемые перед удалением ротированных файлов журналов.

pre_rotate

list / элементы=string

Команды, выполняемые перед ротацией файла журнала.

Можно указать одну строку или список команд.

rename_copy

boolean

Переименовать и скопировать файл журнала, оставив исходный файл на месте.

Варианты:

  • false
  • true

rotate_count

integer

Количество ротированных файлов журналов, которые нужно сохранить.

Укажите 0, чтобы отключить ротацию (сохранять только текущий журнал).

Укажите -1, чтобы сохранять все ротированные журналы (не рекомендуется).

rotation_period

string

Частота ротации журналов.

Если при изменении существующей конфигурации параметр не задан, сохраняется его текущее значение.

При создании новой конфигурации этот параметр включается только в том случае, если он задан.

Варианты:

  • "daily"
  • "weekly"
  • "monthly"
  • "yearly"

shared_scripts

boolean

Выполнять скрипты pre_rotate и post_rotate только один раз для всех совпадающих файлов журналов.

Варианты:

  • false
  • true

shred

boolean

Использовать shred для безопасного удаления ротированных файлов журналов.

Перед удалением файлы перезаписываются с помощью shred -u.

Варианты:

  • false
  • true

shred_cycles

integer

Количество циклов перезаписи файлов при использовании shred=true.

Если параметр не задан, logrotate использует значение по умолчанию для shred.

size

string

Выполнять ротацию файла журнала при превышении указанного размера.

Формат: number[k|M|G] (например, 100M, 1G).

Если задан, переопределяет rotation_period.

Если параметр не задан, при изменении конфигурации сохраняется существующее значение.

При создании новой конфигурации этот параметр не включается, если он не задан.

start

integer

Начальный номер для ротированных файлов. Допустимые значения: от 0 до 999.

Например, 1 создаёт файлы .1, .2 и т. д. вместо .0, .1.

state

string

Определяет, должна ли конфигурация существовать или отсутствовать.

Варианты:

  • "present" ← (по умолчанию)
  • "absent"

su

string

Задать пользователя и группу для ротированных файлов.

Формат: user group (например, www-data adm).

Укажите "" (пустую строку), чтобы удалить директиву из существующих конфигураций.

Укажите null или не задавайте параметр, чтобы оставить существующее значение без изменений (при изменении) или не задавать его (при создании).

syslog

boolean

Отправлять сообщения logrotate в syslog.

Варианты:

  • false
  • true

taboo_ext

list / элементы=string

Список расширений, которые logrotate не должен обрабатывать.

Укажите null или пустой список, чтобы сбросить значения по умолчанию.

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

Может выполняться в режиме check_mode и возвращать прогноз изменения состояния, не изменяя целевой узел.

diff_mode

Поддержка: полная

В режиме сравнения возвращает сведения об изменениях (или возможных изменениях в check_mode).

Примеры

- name: Ensure logrotate config directory exists
  ansible.builtin.file:
    path: /etc/logrotate.d
    state: directory
    mode: '0755'

- name: Configure log rotation for Nginx
  community.general.logrotate:
    name: nginx
    paths:
      - /var/log/nginx/*.log
    rotation_period: daily
    rotate_count: 14
    compress: true
    compress_options: "-9"
    delay_compress: true
    missing_ok: true
    not_if_empty: true
    create: "0640 www-data adm"
    shared_scripts: true
    post_rotate:
      - "[ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)"
      - "echo 'Nginx logs rotated'"

- name: Configure size-based rotation for application logs
  community.general.logrotate:
    name: myapp
    paths:
      - /var/log/myapp/app.log
      - /var/log/myapp/debug.log
    size: 100M
    rotate_count: 10
    compress: true
    compress_options: "-1"
    date_ext: true
    date_yesterday: true
    date_format: -%Y%m%d.%s
    missing_ok: true
    copy_truncate: true

- name: Configure log rotation with secure deletion
  community.general.logrotate:
    name: secure-app
    paths:
      - /var/log/secure-app/*.log
    rotation_period: weekly
    rotate_count: 4
    shred: true
    shred_cycles: 3
    compress: true
    compress_options: "-9"

- name: Configure log rotation with custom start number
  community.general.logrotate:
    name: custom-start
    paths:
      - /var/log/custom/*.log
    rotation_period: monthly
    rotate_count: 6
    start: 1
    compress: true

- name: Configure log rotation with old directory
  community.general.logrotate:
    name: with-old-dir
    paths:
      - /opt/app/logs/*.log
    rotation_period: weekly
    rotate_count: 4
    old_dir: /var/log/archives
    create_old_dir: true
    compress: true
    compression_method: zstd

- name: Disable logrotate configuration
  community.general.logrotate:
    name: old-service
    enabled: false

- name: Remove logrotate configuration
  community.general.logrotate:
    name: deprecated-app
    state: absent

- name: Complex configuration with multiple scripts
  community.general.logrotate:
    name: complex-app
    paths:
      - /var/log/complex/*.log
    rotation_period: monthly
    rotate_count: 6
    compress: true
    delay_compress: false
    pre_rotate:
      - "echo 'Starting rotation for complex app'"
      - "systemctl stop complex-app"
    post_rotate:
      - "systemctl start complex-app"
      - "echo 'Rotation completed'"
      - "logger -t logrotate 'Complex app logs rotated'"
    first_action:
      - "echo 'First action: Starting batch rotation'"
    last_action:
      - "echo 'Last action: Batch rotation complete'"

- name: User-specific logrotate configuration
  community.general.logrotate:
    name: myuser-apps
    config_dir: ~/.logrotate.d
    paths:
      - ~/app/*.log
      - ~/.cache/*/*.log
    rotation_period: daily
    rotate_count: 30
    compress: true
    su: "{{ ansible_user_id }} users"

- name: Configuration with copy instead of move
  community.general.logrotate:
    name: copy-config
    paths:
      - /var/log/copy-app/*.log
    rotation_period: daily
    rotate_count: 7
    copy: true

- name: Configuration with syslog notifications
  community.general.logrotate:
    name: syslog-config
    paths:
      - /var/log/syslog-app/*.log
    rotation_period: daily
    rotate_count: 14
    syslog: true
    compress: true

- name: Configuration without compression
  community.general.logrotate:
    name: nocompress-config
    paths:
      - /var/log/nocompress/*.log
    rotation_period: daily
    rotate_count: 7
    compress: false

- name: Configuration with custom taboo extensions
  community.general.logrotate:
    name: taboo-config
    paths:
      - /var/log/taboo/*.log
    rotation_period: daily
    rotate_count: 7
    taboo_ext: [".backup", ".tmp", ".temp"]

Возвращаемые значения

Общие возвращаемые значения описаны здесь, ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

backup_file

string

Путь к резервной копии исходного файла конфигурации, если она была создана.

Возвращается: при успехе, когда backup=true и существующая конфигурация была перезаписана

Пример: "/etc/logrotate.d/nginx.20250101_120000"

config_content

string

Содержимое созданной конфигурации logrotate.

Возвращается: при успехе, когда state=present

Пример: "/var/log/nginx/*.log {\n    daily\n    rotate 14\n    compress\n    compress_options -9\n    delay_compress\n    missing_ok\n    notifempty\n    create 0640 www-data adm\n    shared_scripts\n    post_rotate\n        [ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)\n        echo 'Nginx logs rotated'\n    endscript\n}\n"

config_file

string

Путь к созданному или обновлённому файлу конфигурации logrotate.

Возвращается: при успехе, когда state=present

Пример: "/etc/logrotate.d/nginx"

enabled_state

boolean

Текущее состояние включения конфигурации.

Возвращается: при успехе

Пример: true

Авторы

  • Aleksandr Gabidullin (@a-gabidullin)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Задать вопрос
  • Сообщить об ошибке
  • Предложить функцию
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/logrotate_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API