logrotate

Ansible роль logrotate

Установите и настройте logrotate на вашей системе.

GitHub Версия Проблемы Запросы на изменение Загрузки
github Version Issues PullRequests Ansible Role

Пример Playbook

Этот пример взят из molecule/default/converge.yml и тестируется при каждом пуше, запросе на изменение и релизе.

---
- name: Сбор
  hosts: all
  become: true
  gather_facts: true

  vars:
    logrotate_frequency: daily
    logrotate_keep: 7
    logrotate_compress: true
    logrotate_entries:
      - name: example
        path: "/var/log/example/*.log"
      - name: example-frequency
        path: "/var/log/example-frequency/*.log"
        frequency: weekly
      - name: example-keep
        path: "/var/log/example-keep/*.log"
        keep: 14
      - name: example-compress
        path: "/var/log/example-compress/*.log"
        compress: true
      - name: example-copylog
        path: "/var/log/example-copylog/*.log"
        copylog: true
      - name: example-copytruncate
        path: "/var/log/example-copytruncate/*.log"
        copytruncate: true
      - name: example-delaycompress
        path: "/var/log/example-delaycompress/*.log"
        delaycompress: true
      - name: example-script
        path: "/var/log/example-script/*.log"
        postrotate: killall -HUP some_process_name
      - name: btmp
        path: /var/log/btmp
        missingok: true
        frequency: monthly
        create: true
        create_mode: "0660"
        create_user: root
        create_group: utmp
        dateext: true
        dateformat: "-%Y-%m-%d"
        keep: 1
      - name: wtmp
        path: /var/log/wtmp
        missingok: true
        frequency: monthly
        create: true
        create_mode: "0664"
        create_user: root
        create_group: utmp
        minsize: 1M
        maxsize: 128M
        dateext: true
        dateformat: "-%Y%m%d"
        keep: 1
      - name: dnf
        path: /var/log/hawkey.log
        missingok: true
        notifempty: true
        keep: 4
        frequency: weekly
        create: true
      - name: example-sharedscripts
        path: "/var/log/example-sharedscripts/*.log"
        sharedscripts: true
      - name: example-dateyesterday
        state: present
        path: "/var/log/example-dateyesterday/*.log"
        dateyesterday: true
      - name: example-absent
        state: absent
      # Отрицательные числа работают в некоторых дистрибутивах: `error: example-negative:10 bad rotation count '-1'\`
      # - name: example-negative
      #   path: "/var/log/example-keep-negative/*.log"
      #   keep: -1

  roles:
    - role: buluma.logrotate

Машина должна быть подготовлена. В CI это делается с помощью molecule/default/prepare.yml:

---
- name: Подготовка
  hosts: all
  become: true
  gather_facts: false

  roles:
    - role: buluma.bootstrap
    - role: buluma.cron

  post_tasks:
    - name: Создание директории для логов
      ansible.builtin.file:
        path: "{{ item }}"
        state: directory
        mode: "0755"
      loop:
        - /var/log/example
        - /var/log/example-frequency
        - /var/log/example-keep
        - /var/log/example-compress
        - /var/log/example-copylog
        - /var/log/example-copytruncate
        - /var/log/example-delaycompress
        - /var/log/example-script
        - /var/log/example-sharedscripts
        - /var/log/example-dateyesterday

    - name: Создание лог-файла
      ansible.builtin.copy:
        dest: "{{ item }}"
        content: "example"
        mode: "0644"
      loop:
        - /var/log/example/app.log
        - /var/log/example-frequency/app.log
        - /var/log/example-keep/app.log
        - /var/log/example-compress/app.log
        - /var/log/example-copylog/app.log
        - /var/log/example-copytruncate/app.log
        - /var/log/example-delaycompress/app.log
        - /var/log/example-script/app.log
        - /var/log/example-sharedscripts/app.log
        - /var/log/example-dateyesterday/app.log
        - /var/log/btmp
        - /var/log/wtmp
        - /var/log/hawkey.log

Смотрите также полное объяснение и пример по использованию этих ролей.

Переменные роли

Значения по умолчанию для переменных установлены в defaults/main.yml:

---
# файл по умолчанию для logrotate

# Как часто вращать логи: ежедневно, еженедельно или ежемесячно.
logrotate_frequency: weekly

# Сколько файлов нужно сохранить.
logrotate_keep: 4

# Должны ли сжатые логи быть сжаты?
logrotate_compress: true

# Использовать дата-расширение в именах лог-файлов
logrotate_dateext: false

# Пользователь/Группа для сжатых лог-файлов (Загружается специфическими для ОС переменными, если найдены, или может быть установлено вручную)
logrotate_user: "{{ _logrotate_user[ansible_distribution] | default(_logrotate_user['default']) }}"
logrotate_group: "{{ _logrotate_group[ansible_distribution] | default(_logrotate_group['default']) }}"

# Установите состояние сервиса
logrotate_service_state: "started"
logrotate_service_enabled: true

Требования

Состояние используемых ролей

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

Требование GitHub Версия
buluma.bootstrap Ansible Molecule Version
buluma.cron Ansible Molecule Version
buluma.epel Ansible Molecule Version

Контекст

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

Вот обзор связанных ролей:

dependencies

Совместимость

Эта роль была протестирована на следующих образах контейнеров:

контейнер теги
Alpine все
EL 8, 9
Debian все
Fedora все
opensuse все
Ubuntu все
Kali все

Минимальная версия Ansible, необходимая для работы, — 2.12, тесты проводились на:

  • Предыдущей версии.
  • Текущей версии.
  • Версии разработки.

Если вы обнаружите проблемы, пожалуйста, зарегистрируйте их в GitHub.

История изменений

История роли

Лицензия

Apache-2.0

Информация об авторе

Shadow Walker

О проекте

Install and configure logrotate on your system.

Установить
ansible-galaxy install buluma/ansible-role-logrotate
Лицензия
apache-2.0
Загрузки
65448
Владелец
DevOps Engineer