robertdebock.logrotate

Rol de Ansible logrotate

Instala y configura logrotate en tu sistema.

GitHub GitLab Descargas Versión
github gitlab downloads Versión

Ejemplo de Playbook

Este ejemplo se toma de molecule/default/converge.yml y se prueba con cada push, solicitud de extracción y lanzamiento.

---
- name: Converger
  hosts: all
  become: true
  gather_facts: true

  vars:
    logrotate_frequency: daily
    logrotate_keep: 7
    logrotate_compress: true
    logrotate_entries:
      - name: ejemplo
        path: "/var/log/ejemplo/*.log"
      - name: ejemplo-frecuencia
        path: "/var/log/ejemplo-frecuencia/*.log"
        frequency: weekly
      - name: ejemplo-conservar
        path: "/var/log/ejemplo-conservar/*.log"
        keep: 14
      - name: ejemplo-comprimir
        path: "/var/log/ejemplo-comprimir/*.log"
        compress: true
      - name: ejemplo-copiarlog
        path: "/var/log/ejemplo-copiarlog/*.log"
        copylog: true
      - name: ejemplo-copiartruncar
        path: "/var/log/ejemplo-copiartruncar/*.log"
        copytruncate: true
      - name: ejemplo-retrasarcompresión
        path: "/var/log/ejemplo-retrasarcompresión/*.log"
        delaycompress: true
      - name: ejemplo-script
        path: "/var/log/ejemplo-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: ejemplo-scriptscompartidos
        path: "/var/log/ejemplo-scriptscompartidos/*.log"
        sharedscripts: true
      - name: ejemplo-fechadeayer
        state: present
        path: "/var/log/ejemplo-fechadeayer/*.log"
        dateyesterday: true
      - name: ejemplo-ausente
        state: absent
      # Los números negativos funcionan en algunas distribuciones: `error: ejemplo-negativo:10 conteo de rotación malo '-1'\`
      # - name: ejemplo-negativo
      #   path: "/var/log/ejemplo-conservar-negativo/*.log"
      #   keep: -1

  roles:
    - role: robertdebock.logrotate

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

---
- name: Preparar
  hosts: all
  become: true
  gather_facts: false

  roles:
    - role: robertdebock.bootstrap
    - role: robertdebock.cron

  post_tasks:
    - name: Crear directorio de logs
      ansible.builtin.file:
        path: "{{ item }}"
        state: directory
        mode: "0755"
      loop:
        - /var/log/ejemplo
        - /var/log/ejemplo-frecuencia
        - /var/log/ejemplo-conservar
        - /var/log/ejemplo-comprimir
        - /var/log/ejemplo-copiarlog
        - /var/log/ejemplo-copiartruncar
        - /var/log/ejemplo-retrasarcompresión
        - /var/log/ejemplo-script
        - /var/log/ejemplo-scriptscompartidos
        - /var/log/ejemplo-fechadeayer

    - name: Crear archivo de log
      ansible.builtin.copy:
        dest: "{{ item }}"
        content: "ejemplo"
        mode: "0644"
      loop:
        - /var/log/ejemplo/app.log
        - /var/log/ejemplo-frecuencia/app.log
        - /var/log/ejemplo-conservar/app.log
        - /var/log/ejemplo-comprimir/app.log
        - /var/log/ejemplo-copiarlog/app.log
        - /var/log/ejemplo-copiartruncar/app.log
        - /var/log/ejemplo-retrasarcompresión/app.log
        - /var/log/ejemplo-script/app.log
        - /var/log/ejemplo-scriptscompartidos/app.log
        - /var/log/ejemplo-fechadeayer/app.log
        - /var/log/btmp
        - /var/log/wtmp
        - /var/log/hawkey.log

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

Variables de Rol

Los valores predeterminados para las variables se establecen en defaults/main.yml:

---
# archivo de valores predeterminados para logrotate

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

# Cuántos archivos conservar.
logrotate_keep: 4

# ¿Se deben comprimir 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 (Cargados por vars específicas de SO si se encuentran, o se pueden establecer 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 GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab
robertdebock.cron Build Status GitHub Build Status GitLab

Contexto

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

Aquí hay un resumen de los roles relacionados: dependencies

Compatibilidad

Este rol ha sido probado en estas imágenes de contenedores:

Contenedor Etiquetas
Alpine todas
Amazon Candidata
EL 9
Debian todas
Fedora todas
Ubuntu 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, regístralos en GitHub.

Licencia

Apache-2.0.

Información del Autor

robertdebock

Por favor considera patrocinarme.

Acerca del proyecto

Install and configure logrotate on your system.

Instalar
ansible-galaxy install robertdebock.logrotate
Licencia
apache-2.0
Descargas
196.4k
Propietario
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.