robertdebock.logrotate
Ansibleロールlogrotate
システムにlogrotateをインストールして設定します。
| GitHub | GitLab | ダウンロード | バージョン | 
|---|---|---|---|
例のプレイブック
この例はmolecule/default/converge.ymlから取られており、各プッシュ、プルリクエスト、リリースでテストされています。
---
- 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
      # 負の数は一部のディストリビューションで機能します:`error: example-negative:10 bad rotation count '-1'`
      # - name: example-negative
      #   path: "/var/log/example-keep-negative/*.log"
      #   keep: -1
  roles:
    - role: robertdebock.logrotate
マシンを準備する必要があります。CIではmolecule/default/prepare.ymlを使用してこれを行います。
---
- name: Prepare
  hosts: all
  become: true
  gather_facts: false
  roles:
    - role: robertdebock.bootstrap
    - role: robertdebock.cron
  post_tasks:
    - name: Create log directory
      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: Create log file
      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
これらのロールの使い方については、完全な説明と例を参照してください。
ロール変数
変数のデフォルト値はdefaults/main.ymlに設定されています。
---
# logrotateのデフォルトファイル
# ログをどのくらいの頻度で回転させるか(daily、weekly、monthlyのいずれか)。
logrotate_frequency: weekly
# いくつのファイルを保持するか。
logrotate_keep: 4
# 回転されたログを圧縮するか?
logrotate_compress: true
# ログファイル名に日付拡張子を使用するか
logrotate_dateext: false
# 回転されたログファイルのユーザー/グループ(OS固有の変数が見つかった場合に読み込まれ、手動で設定することも可能)
logrotate_user: "{{ _logrotate_user[ansible_distribution] | default(_logrotate_user['default']) }}"
logrotate_group: "{{ _logrotate_group[ansible_distribution] | default(_logrotate_group['default']) }}"
# サービスの状態を設定
logrotate_service_state: "started"
logrotate_service_enabled: true
要件
- requirements.txtに記載されているpipパッケージ。
使用されるロールの状態
システムを準備するために以下のロールが使用されます。他の方法でシステムを準備することもできます。
| 要件 | GitHub | GitLab | 
|---|---|---|
| robertdebock.bootstrap | ||
| robertdebock.cron | 
コンテキスト
このロールは、多くの互換性のあるロールの一部です。さらに詳しい情報については、これらのロールのドキュメントをご覧ください。
関連ロールの概要は次のとおりです:

互換性
このロールは、以下のコンテナイメージでテストされています。
| コンテナ | タグ | 
|---|---|
| Alpine | 全て | 
| Amazon | Candidate | 
| EL | 9 | 
| Debian | 全て | 
| Fedora | 全て | 
| Ubuntu | 全て | 
必要な最小バージョンのAnsibleは2.12で、以下のテストが行われました:
- 前のバージョン。
- 現在のバージョン。
- 開発バージョン。
問題が見つかった場合は、GitHubで報告してください。
ライセンス
著者情報
私をサポートすることを検討してください。
インストール
 ansible-galaxy install robertdebock.logrotateライセンス
 
            apache-2.0
          
ダウンロード
 
            229.3k
          
所有者
 I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.
