robertdebock.logrotate

Ansible-Rolle Logrotate

Installieren und konfigurieren Sie Logrotate auf Ihrem System.

GitHub GitLab Downloads Version
github gitlab downloads Version

Beispiel-Playbook

Dieses Beispiel stammt aus molecule/default/converge.yml und wird bei jedem Push, Pull-Request und Release getestet.

---
- name: Zusammenführen
  hosts: all
  become: true
  gather_facts: true

  vars:
    logrotate_frequency: daily
    logrotate_keep: 7
    logrotate_compress: true
    logrotate_entries:
      - name: beispiel
        path: "/var/log/example/*.log"
      - name: beispiel-häufigkeit
        path: "/var/log/example-frequency/*.log"
        frequency: weekly
      - name: beispiel-behalten
        path: "/var/log/example-keep/*.log"
        keep: 14
      - name: beispiel-komprimieren
        path: "/var/log/example-compress/*.log"
        compress: true
      - name: beispiel-copylog
        path: "/var/log/example-copylog/*.log"
        copylog: true
      - name: beispiel-copytruncate
        path: "/var/log/example-copytruncate/*.log"
        copytruncate: true
      - name: beispiel-delaycompress
        path: "/var/log/example-delaycompress/*.log"
        delaycompress: true
      - name: beispiel-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: beispiel-geteilte-skripte
        path: "/var/log/example-sharedscripts/*.log"
        sharedscripts: true
      - name: beispiel-datum-von-gestern
        state: present
        path: "/var/log/example-dateyesterday/*.log"
        dateyesterday: true
      - name: beispiel-abwesend
        state: absent
      # Negative Zahlen funktionieren in einigen Distributionen: `error: beispiel-negativ:10 ungültige Rotationsanzahl '-1'\`
      # - name: beispiel-negativ
      #   path: "/var/log/example-keep-negative/*.log"
      #   keep: -1

  roles:
    - role: robertdebock.logrotate

Die Maschine muss vorbereitet werden. In CI geschieht dies mit molecule/default/prepare.yml:

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

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

  post_tasks:
    - name: Log-Verzeichnis erstellen
      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: Log-Datei erstellen
      ansible.builtin.copy:
        dest: "{{ item }}"
        content: "beispiel"
        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

Siehe auch eine vollständige Erklärung und Beispiele, wie man diese Rollen verwendet.

Rollenvariablen

Die Standardwerte für die Variablen sind in defaults/main.yml festgelegt:

---
# Standarddatei für Logrotate

# Wie oft Logs rotiert werden, entweder täglich, wöchentlich oder monatlich.
logrotate_frequency: weekly

# Wie viele Dateien aufbewahrt werden sollen.
logrotate_keep: 4

# Sollen rotierte Logs komprimiert werden?
logrotate_compress: true

# Datumsanpassung für Logdateinamen verwenden
logrotate_dateext: false

# Benutzer/Gruppe für rotierte Logdateien (geladen von betriebssystemspezifischen Variablen, falls gefunden, oder kann manuell festgelegt werden)
logrotate_user: "{{ _logrotate_user[ansible_distribution] | default(_logrotate_user['default']) }}"
logrotate_group: "{{ _logrotate_group[ansible_distribution] | default(_logrotate_group['default']) }}"

# Status des Dienstes festlegen
logrotate_service_state: "started"
logrotate_service_enabled: true

Anforderungen

Status der verwendeten Rollen

Die folgenden Rollen werden verwendet, um ein System vorzubereiten. Sie können Ihr System auch anders vorbereiten.

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

Kontext

Diese Rolle ist Teil vieler kompatibler Rollen. Schauen Sie sich die Dokumentation dieser Rollen für weitere Informationen an.

Hier ist eine Übersicht der verwandten Rollen: dependencies

Kompatibilität

Diese Rolle wurde mit diesen Container-Images getestet:

Container Tags
Alpine alle
Amazon Kandidat
EL 9
Debian alle
Fedora alle
Ubuntu alle

Die Mindestversion von Ansible, die erforderlich ist, ist 2.12. Tests wurden an Folgendem durchgeführt:

  • Der vorherigen Version.
  • Der aktuellen Version.
  • Der Entwicklungsumgebung.

Wenn Sie Probleme finden, registrieren Sie diese bitte in GitHub.

Lizenz

Apache-2.0.

Autorinformationen

robertdebock

Bitte ziehen Sie in Betracht, mich zu unterstützen.

Über das Projekt

Install and configure logrotate on your system.

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