robertdebock.logrotate

Rola Ansible logrotate

Zainstaluj i skonfiguruj logrotate na swoim systemie.

GitHub GitLab Pobrania Wersja
github gitlab downloads Wersja

Przykładowy plik playbook

Ten przykład został zaczerpnięty z molecule/default/converge.yml i jest testowany przy każdym pushu, zapytaniu pull i wydaniu.

---
- name: 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
      # A negative numbers work on some distributions: `error: example-negative:10 bad rotation count '-1'\`
      # - name: example-negative
      #   path: "/var/log/example-keep-negative/*.log"
      #   keep: -1

  roles:
    - role: robertdebock.logrotate

Maszyna musi być przygotowana. W CI odbywa się to za pomocą molecule/default/prepare.yml:

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

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

  post_tasks:
    - name: Utwórz katalog logów
      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: Utwórz plik logów
      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

Zobacz również pełne wyjaśnienie i przykład jak korzystać z tych ról.

Zmienne roli

Domyślne wartości dla zmiennych są ustawione w defaults/main.yml:

---
# domyślny plik dla logrotate

# Jak często rotować logi, codziennie, tygodniowo lub miesięcznie.
logrotate_frequency: weekly

# Ile plików zachować.
logrotate_keep: 4

# Czy rotowane logi mają być kompresowane??
logrotate_compress: true

# Użyj rozszerzenia daty w nazwach plików logów
logrotate_dateext: false

# Użytkownik/Grupa dla rotowanych plików logów (Załadowane przez zmienne specyficzne dla systemu, jeśli znalezione, lub można ustawić ręcznie)
logrotate_user: "{{ _logrotate_user[ansible_distribution] | default(_logrotate_user['default']) }}"
logrotate_group: "{{ _logrotate_group[ansible_distribution] | default(_logrotate_group['default']) }}"

# Ustaw stan usługi
logrotate_service_state: "started"
logrotate_service_enabled: true

Wymagania

Stan używanych ról

Poniższe role są używane do przygotowania systemu. Możesz przygotować swój system w inny sposób.

Wymaganie GitHub GitLab
robertdebock.bootstrap Stan budowy GitHub Stan budowy GitLab
robertdebock.cron Stan budowy GitHub Stan budowy GitLab

Kontekst

Ta rola jest częścią wielu kompatybilnych ról. Zajrzyj do dokumentacji tych ról po więcej informacji.

Oto przegląd pokrewnych ról: dependencies

Kompatybilność

Ta rola została przetestowana na tych obrazach kontenerowych:

kontener tagi
Alpine wszystkie
Amazon Kandydat
EL 9
Debian wszystkie
Fedora wszystkie
Ubuntu wszystkie

Minimalna wersja Ansible wymagana to 2.12, testy zostały przeprowadzone na:

  • Poprzedniej wersji.
  • Bieżącej wersji.
  • Wersji deweloperskiej.

Jeśli znajdziesz problemy, zgłoś je na GitHubie.

Licencja

Apache-2.0.

Informacje o autorze

robertdebock

Proszę rozważyć wsparcie mnie.

O projekcie

Install and configure logrotate on your system.

Zainstaluj
ansible-galaxy install robertdebock.logrotate
Licencja
apache-2.0
Pobrania
196.4k
Właściciel
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.