前提:jenkins和ansible均已安装完毕

1.编写yml文件

环境准备:以zxyh测试环境为例
1.wasup登录服务器,新建文件夹
mkdir -p /home/wasup/auto/logClean
2.切换到新建目录下,新建logClean.yml
cd /home/wasup/auto/logClean
vim logClean.yml
[注:directoryAge:30d表示大于等于30天的数据,生产实际情况跟项目经理定压缩时间。
logPath: /log 表示zxyh的日志路径,生产根据实际情况修改
]
此次方案文字叙述为:自动清理日志目录下大于等于30天的文件夹,以及删除大于等于90天的压缩包

 

文件内容如下:

---
 - hosts: zxyh_ip
   remote_user: wasup
   vars:
    - directoryAge: 30d
    - tarAge: 90d
    - logPath: /log
    - systemName: zxyh
   tasks:
    - name: 找到日志目录下时间大于directoryAge的文件夹,并排除lost+found,cfca未知用处的文件夹
      find:
       path: "{{ logPath }}"
       age: "{{ directoryAge }}"
       file_type: directory
       exclude: 
        - "lost+found"
        - "cfca"
      register: logFiles
    - name: 将符合条件的文件夹压缩并删除源文件夹
      shell: tar -zcvf "{{ item.path }}.tar.gz"  "{{ item.path }}" --remove-files 
      with_items:
       - "{{ logFiles.files }}"
    - name: 找到符合条件的压缩包
      find:
       path: "{{ logPath }}"
       age: "{{ tarAge }}"
       file_type: any
       patterns: "*.tar.gz"
      register: tarFiles
    - name: 删除日志目录下时间大于tarAge的压缩包
      file:
       path: "{{ item.path }}"
       state: absent
      with_items:
       - "{{ tarFiles.files }}"

 

2. jenkins新建自动清理任务

登录jenkins--新建任务--输入任务名称(因为我已经操作过一次,所以提示已存在)--选择构建一个自由风格的软件项目--点击确定

ansible临时缓存日志存放位置 ansible 日志_服务器

 

跳转后输入任务描述

 

 

ansible临时缓存日志存放位置 ansible 日志_触发器_02

2.1. 构建触发器

点击构建触发器--构建定时触发器,H H 1 * * 表示每个月1号执行一次,语法参考下面介绍

 

ansible临时缓存日志存放位置 ansible 日志_触发器_03

Jenkins采用了著名的UNIX任务调度工具CRON所使用的配置方式,用5个字段代表5个不同的时间单位(中间用空格隔开),语法如下:

 

字段

*

*

*

*

*

含义

分钟

小时

日期

月份

星期

取值范围

0-59

0-23

1-31

1-12

0-7

 

 

 

 

 

 

示例

 

 

 

 

 

每隔15分钟执行一次

H/15

*

*

*

*

每隔2小时执行一次 

H

H/2

*

*

*

每隔3天执行一次

H

H

H/3

*

*

每隔3天执行一次(每月的1-15号)

H

H

1-15/3

*

*

每周1/3/5执行一次

H

H

*

*

1,3,5

每天3点执行一次

H

3

*

*

*

每天8/12/22点执行一次

H

8,12,22

*

*

*

 

 

 

 

 

 

规则

备注

 

 

 

 

指定时间范围

x-y

 

 

 

 

指定时间间隔

/

 

 

 

 

指定变量取值

x,y,z

 

 

 

 


 

2.2 构建环境--执行shell

点击构建环境--选择执行shell命令--命令如下

#1. SSH ansible服务器

ssh -p 22 ansible@ansible_ip << remotessh

#2.新建文件夹

mkdir -p /home/ansible/apps/zxyh/logClean

#3. 将logClean.yml复制到/home/ansible/apps/zxyh/logClean下

ansible zxyh_ip -m fetch -a 'src=/home/wasup/auto/logClean/logClean.yml dest=/home/ansible/apps/zxyh/logClean/logClean.yml flat=true' -u wasup

#4.执行 logClean.yml [-e directoryAge=1d 这个表示修改directoryAge变量的值为1d,不添加则按照yml中定义的directoryAge:30d去执行]

ansible-playbook /home/ansible/apps/zxyh/logClean/logClean.yml -e directoryAge=1d

exit

remotessh

ansible临时缓存日志存放位置 ansible 日志_ansible临时缓存日志存放位置_04

 

 

 最后点击保存即可。

点击立即构建--控制台查看输出。完成后到zxyh服务器日志路径/log下查看生成满足条件的压缩包

此次自动清理功能已完成