使用 ansible playbook 进行 Logrotate

Mai*_*ägi 6 ansible

所以我想创建一个 ansible playbook,在公司的所有服务器上安装 logrotate。还将它们配置为将日志设置为每周备份,然后在一周后删除。所以每周它都会创建一个新日志,备份上周的日志,并在第三周删除第一个并重复。

到目前为止,我已经找到了这个,但我们不使用 nginx。它并不完全符合我的要求。我在剧本方面的知识非常有限,所以如果有人可以提供帮助,那就太棒了。我还需要它来检查服务器是否有 tomcat、apache 或 wildfly,然后获取这些日志。

logrotate_scripts:
  - name: nginx-options
    path: /var/log/nginx/options.log
      options:
      - daily
      - weekly
      - size 25M
      - rotate 7
      - missingok
      - compress
      - delaycompress
      - copytruncate
Run Code Online (Sandbox Code Playgroud)

Vla*_*tka 13

让我们使用blockinfile。例如任务

    - blockinfile:
        path: "/etc/logrotate.d/{{ item.path }}"
        block: "{{ item.conf }}"
        create: true
      loop: "{{ lp_logrotate_confd }}"
Run Code Online (Sandbox Code Playgroud)

与变量

    lp_logrotate_confd:
      - path: ansible
        conf: |
          /var/log/ansible.log {
                 weekly
                 rotate 3
                 size 10M
                 compress
                 delaycompress
          }
Run Code Online (Sandbox Code Playgroud)

创造

    shell> cat /etc/logrotate.d/ansible 
    # BEGIN ANSIBLE MANAGED BLOCK
    /var/log/ansible.log {
           weekly
           rotate 3
           size 10M
           compress
           delaycompress
    }
    # END ANSIBLE MANAGED BLOCK
Run Code Online (Sandbox Code Playgroud)

将项目添加到列表并根据您的需要调整配置数据。为方便起见,代码可在GitHub 上获得

  • 与使用 Ansible Galaxy 贡献的角色相比,我更喜欢您的解决方案,例如 https://galaxy.ansible.com/nickhammond/logrotate :) (4认同)