buluma.logrotate

Rol de Ansible logrotate

Instala y configura logrotate en tu sistema.

GitHub Versión Problemas Solicitudes de Extracción Descargas
github Versión Problemas SolicitudesPr Rol de Ansible

Ejemplo de Playbook

Este ejemplo es tomado de molecule/default/converge.yml y se prueba en cada "push", solicitud de extracción y lanzamiento.

---
- nombre: Converge
  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

  roles:
    - role: buluma.logrotate

La máquina necesita ser preparada. En CI esto se hace usando molecule/default/prepare.yml:

---
- nombre: Prepare
  hosts: all
  become: true
  gather_facts: false

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

  post_tasks:
    - nombre: Crear directorio de logs
      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

    - nombre: Crear archivo de log
      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

También puedes ver una explicación completa y ejemplo sobre cómo usar estos roles.

Variables del Rol

Los valores predeterminados para las variables están establecidos en defaults/main.yml:

---
# archivo de valores predeterminados para logrotate

# Con qué frecuencia rotar los logs, ya sea diaria, semanal o mensual.
logrotate_frequency: weekly

# Cuántos archivos mantener.
logrotate_keep: 4

# ¿Deben comprimirse los logs rotados?
logrotate_compress: true

# Usar extensión de fecha en los nombres de los archivos de log
logrotate_dateext: false

# Usuario/Grupo para los archivos de log rotados (Cargado por vars específicas del SO si se encuentra, o puede configurarse manualmente)
logrotate_user: "{{ _logrotate_user[ansible_distribution] | default(_logrotate_user['default']) }}"
logrotate_group: "{{ _logrotate_group[ansible_distribution] | default(_logrotate_group['default']) }}"

# Establecer el estado del servicio
logrotate_service_state: "started"
logrotate_service_enabled: true

Requisitos

Estado de los roles utilizados

Los siguientes roles se utilizan para preparar un sistema. Puedes preparar tu sistema de otra manera.

Requisito GitHub Versión
buluma.bootstrap Ansible Molecule Versión
buluma.cron Ansible Molecule Versión
buluma.epel Ansible Molecule Versión

Contexto

Este rol es parte de muchos roles compatibles. Mira la documentación de estos roles para más información.

Aquí hay un resumen de roles relacionados:

dependencias

Compatibilidad

Este rol se ha probado en estas imágenes de contenedor:

contenedor etiquetas
Alpine todas
EL 8, 9
Debian todas
Fedora todas
opensuse todas
Ubuntu todas
Kali todas

La versión mínima de Ansible requerida es 2.12, se han realizado pruebas en:

  • La versión anterior.
  • La versión actual.
  • La versión de desarrollo.

Si encuentras problemas, por favor regístralos en GitHub

Registro de cambios

Historial del Rol

Licencia

Apache-2.0

Información del autor

Shadow Walker

Acerca del proyecto

Install and configure logrotate on your system.

Instalar
ansible-galaxy install buluma.logrotate
Licencia
apache-2.0
Descargas
67.4k
Propietario
DevOps Engineer