buluma.logrotate
Rôle Ansible logrotate
Installez et configurez logrotate sur votre système.
| GitHub | Version | Problèmes | Demandes de tirage | Téléchargements | 
|---|---|---|---|---|
Exemple de Playbook
Cet exemple est tiré de molecule/default/converge.yml et est testé à chaque poussée, demande de tirage et publication.
---
- name: Converger
  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-comprimer
        path: "/var/log/exemple-comprimer/*.log"
        compress: true
      - name: exemple-copierlog
        path: "/var/log/exemple-copierlog/*.log"
        copylog: true
      - name: exemple-copietruncate
        path: "/var/log/exemple-copietruncate/*.log"
        copytruncate: true
      - name: exemple-délayercomprimer
        path: "/var/log/exemple-délayercomprimer/*.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-absent
        state: absent
      # Les nombres négatifs fonctionnent sur certaines distributions : `erreur : exemple-négatif:10 mauvais compte de rotation '-1'\`
      # - name: exemple-négatif
      #   path: "/var/log/exemple-garder-négatif/*.log"
      #   keep: -1
  roles:
    - role: buluma.logrotate
La machine doit être préparée. Dans CI, cela se fait avec molecule/default/prepare.yml :
---
- name: Préparer
  hosts: all
  become: true
  gather_facts: false
  roles:
    - role: buluma.bootstrap
    - role: buluma.cron
  post_tasks:
    - name: Créer le répertoire de log
      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-comprimer
        - /var/log/exemple-copierlog
        - /var/log/exemple-copietruncate
        - /var/log/exemple-délayercomprimer
        - /var/log/exemple-script
        - /var/log/exemple-scriptspartagés
        - /var/log/exemple-datehier
    - name: Créer le fichier de 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-comprimer/app.log
        - /var/log/exemple-copierlog/app.log
        - /var/log/exemple-copietruncate/app.log
        - /var/log/exemple-délayercomprimer/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 explication complète et un exemple sur comment utiliser ces rôles.
Variables du rôle
Les valeurs par défaut des variables sont définies dans defaults/main.yml :
---
# fichier par défaut pour logrotate
# À quelle fréquence faire pivoter les logs, soit quotidiennement, hebdomadairement ou mensuellement.
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 log tournés (chargé par des variables spécifiques au système d'exploitation si trouvées, 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
- Paquets pip listés dans requirements.txt.
É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 d'une autre manière.
| Exigence | GitHub | Version | 
|---|---|---|
| buluma.bootstrap | ||
| buluma.cron | ||
| buluma.epel | 
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 :

Compatibilité
Ce rôle a été testé sur ces images de conteneurs :
| conteneur | tags | 
|---|---|
| Alpine | tous | 
| EL | 8, 9 | 
| Debian | tous | 
| Fedora | tous | 
| opensuse | tous | 
| Ubuntu | tous | 
| Kali | tous | 
La version minimale d'Ansible requise est 2.12, des tests ont été effectués sur :
- La version précédente.
- La version actuelle.
- La version de développement.
Si vous rencontrez des problèmes, veuillez les signaler sur GitHub
Journal des modifications
Licence
Informations sur l'auteur
ansible-galaxy install buluma.logrotate