robertdebock.logrotate

Rôle Ansible logrotate

Installez et configurez logrotate sur votre système.

GitHub GitLab Téléchargements Version
github gitlab downloads Version

Exemple de Playbook

Cet exemple est tiré de molecule/default/converge.yml et est testé à chaque push, pull request et release.

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

  vars:
    logrotate_frequency: daily
    logrotate_keep: 7
    logrotate_compress: true
    logrotate_entries:
      - name: exemple
        path: "/var/log/exemple/*.log"
      - name: exemple-fréquence
        path: "/var/log/exemple-fréquence/*.log"
        frequency: weekly
      - name: exemple-garder
        path: "/var/log/exemple-garder/*.log"
        keep: 14
      - name: exemple-compression
        path: "/var/log/exemple-compression/*.log"
        compress: true
      - name: exemple-copylog
        path: "/var/log/exemple-copylog/*.log"
        copylog: true
      - name: exemple-copytruncate
        path: "/var/log/exemple-copytruncate/*.log"
        copytruncate: true
      - name: exemple-delaycompress
        path: "/var/log/exemple-delaycompress/*.log"
        delaycompress: true
      - name: exemple-script
        path: "/var/log/exemple-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: exemple-scriptspartagés
        path: "/var/log/exemple-scriptspartagés/*.log"
        sharedscripts: true
      - name: exemple-datehier
        state: present
        path: "/var/log/exemple-datehier/*.log"
        dateyesterday: true
      - name: exemple-abent
        state: absent
      # Les nombres négatifs fonctionnent sur certaines distributions : `error: exemple-négatif:10 bad rotation count '-1'\`
      # - name: exemple-négatif
      #   path: "/var/log/exemple-garder-négatif/*.log"
      #   keep: -1

  roles:
    - role: robertdebock.logrotate

La machine doit être préparée. Dans CI, ceci est fait en utilisant molecule/default/prepare.yml:

---
- name: Préparer
  hosts: all
  become: true
  gather_facts: false

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

  post_tasks:
    - name: Créer le répertoire de logs
      ansible.builtin.file:
        path: "{{ item }}"
        state: directory
        mode: "0755"
      loop:
        - /var/log/exemple
        - /var/log/exemple-fréquence
        - /var/log/exemple-garder
        - /var/log/exemple-compression
        - /var/log/exemple-copylog
        - /var/log/exemple-copytruncate
        - /var/log/exemple-delaycompress
        - /var/log/exemple-script
        - /var/log/exemple-scriptspartagés
        - /var/log/exemple-datehier

    - name: Créer le fichier log
      ansible.builtin.copy:
        dest: "{{ item }}"
        content: "exemple"
        mode: "0644"
      loop:
        - /var/log/exemple/app.log
        - /var/log/exemple-fréquence/app.log
        - /var/log/exemple-garder/app.log
        - /var/log/exemple-compression/app.log
        - /var/log/exemple-copylog/app.log
        - /var/log/exemple-copytruncate/app.log
        - /var/log/exemple-delaycompress/app.log
        - /var/log/exemple-script/app.log
        - /var/log/exemple-scriptspartagés/app.log
        - /var/log/exemple-datehier/app.log
        - /var/log/btmp
        - /var/log/wtmp
        - /var/log/hawkey.log

Voir aussi une explanation complète et exemple sur comment utiliser ces rôles.

Variables de rôle

Les valeurs par défaut des variables sont définies dans defaults/main.yml:

---
# fichier de valeurs par défaut pour logrotate

# À quelle fréquence faire la rotation des logs, soit quotidien, hebdomadaire ou mensuel.
logrotate_frequency: weekly

# Combien de fichiers conserver.
logrotate_keep: 4

# Les logs tournés doivent-ils être compressés ?
logrotate_compress: true

# Utiliser une extension de date dans les noms de fichiers de log
logrotate_dateext: false

# Utilisateur/Groupe pour les fichiers de logs tournés (Chargé par des vars spécifiques à l'OS si trouvé, ou peut être défini manuellement)
logrotate_user: "{{ _logrotate_user[ansible_distribution] | default(_logrotate_user['default']) }}"
logrotate_group: "{{ _logrotate_group[ansible_distribution] | default(_logrotate_group['default']) }}"

# Définir l'état du service
logrotate_service_state: "started"
logrotate_service_enabled: true

Exigences

État des rôles utilisés

Les rôles suivants sont utilisés pour préparer un système. Vous pouvez préparer votre système autrement.

Exigence GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab
robertdebock.cron Build Status GitHub Build Status GitLab

Contexte

Ce rôle fait partie de nombreux rôles compatibles. Consultez la documentation de ces rôles pour plus d'informations.

Voici un aperçu des rôles connexes : dépendances

Compatibilité

Ce rôle a été testé sur ces images de conteneurs:

conteneur tags
Alpine tous
Amazon Candidate
EL 9
Debian tous
Fedora tous
Ubuntu tous

La version minimale d'Ansible requise est 2.12, des tests ont été réalisés sur :

  • La version précédente.
  • La version actuelle.
  • La version de développement.

Si vous trouvez des problèmes, veuillez les signaler sur GitHub.

Licence

Apache-2.0.

Informations sur l'auteur

robertdebock

Merci de considérer me sponsoriser.

À propos du projet

Install and configure logrotate on your system.

Installer
ansible-galaxy install robertdebock.logrotate
Licence
apache-2.0
Téléchargements
196.4k
Propriétaire
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.