优化日志处理流程
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
---
|
||||
- name: 压缩和清理服务器日志
|
||||
- name: 自动拉取服务器日志
|
||||
hosts: logs
|
||||
gather_facts: false
|
||||
vars:
|
||||
@@ -11,26 +11,22 @@
|
||||
remove_local_archives: true
|
||||
|
||||
tasks:
|
||||
- name: 验证必填参数
|
||||
- name: 缺少必填参数
|
||||
ansible.builtin.fail:
|
||||
msg: "缺少必填参数!必须提供: year, month, start_day, end_day"
|
||||
when: year is not defined or month is not defined or start_day is not defined or end_day is not defined
|
||||
|
||||
- name: 显示将要处理的日志路径
|
||||
ansible.builtin.debug:
|
||||
msg: "处理路径: {{ log_base_path }}/{{ year }}/{{ month }}, 日期范围: {{ start_day }}-{{ end_day }}"
|
||||
|
||||
- name: 确保日志目录存在
|
||||
- name: 检查日志目录
|
||||
ansible.builtin.stat:
|
||||
path: "{{ log_base_path }}/{{ year }}/{{ month }}"
|
||||
register: log_dir
|
||||
|
||||
- name: 检查日志目录是否存在
|
||||
- name: 日志目录不存在
|
||||
ansible.builtin.fail:
|
||||
msg: "日志目录 {{ log_base_path }}/{{ year }}/{{ month }} 不存在"
|
||||
when: not log_dir.stat.exists
|
||||
|
||||
- name: 压缩指定日期范围的日志文件夹
|
||||
- name: 压缩日志
|
||||
ansible.builtin.shell: |
|
||||
cd {{ log_base_path }}/{{ year }}/{{ month }}
|
||||
for day in $(seq -f "%02g" {{ start_day }} {{ end_day }}); do
|
||||
@@ -46,39 +42,46 @@
|
||||
become: true
|
||||
register: compress_result
|
||||
|
||||
- name: 显示压缩结果
|
||||
- name: 展示压缩结果
|
||||
ansible.builtin.debug:
|
||||
var: compress_result.stdout_lines
|
||||
|
||||
- name: 列出已生成的压缩文件
|
||||
ansible.builtin.find:
|
||||
paths: "{{ log_base_path }}/{{ year }}/{{ month }}"
|
||||
patterns: "*.tar.gz"
|
||||
register: compressed_files
|
||||
|
||||
- name: 删除已压缩的原始文件夹
|
||||
- name: 删除原始日志
|
||||
ansible.builtin.shell: |
|
||||
cd {{ log_base_path }}/{{ year }}/{{ month }}
|
||||
for day in $(seq -f "%02g" {{ start_day }} {{ end_day }}); do
|
||||
if [ -d "$day" ] && [ -f "${day}.tar.gz" ]; then
|
||||
echo "删除原始目录: $day"
|
||||
rm -rf $day
|
||||
else
|
||||
echo "文件 ${day} 或 ${day}.tar.gz 不存在,跳过"
|
||||
fi
|
||||
done
|
||||
args:
|
||||
executable: /bin/bash
|
||||
become: true
|
||||
when: remove_after_compress
|
||||
when: remove_after_compress | bool
|
||||
register: delete_result
|
||||
|
||||
- name: 确保本地下载目录存在
|
||||
- name: 展示删除结果
|
||||
ansible.builtin.debug:
|
||||
var: delete_result.stdout_lines
|
||||
|
||||
- name: 收集压缩文件
|
||||
ansible.builtin.find:
|
||||
paths: "{{ log_base_path }}/{{ year }}/{{ month }}"
|
||||
patterns: "*.tar.gz"
|
||||
register: compressed_files
|
||||
|
||||
- name: 检查下载目录
|
||||
ansible.builtin.file:
|
||||
path: "{{ local_download_path }}/{{ label }}/{{ year }}/{{ month }}"
|
||||
state: directory
|
||||
delegate_to: localhost
|
||||
when: download_to_local
|
||||
when: download_to_local | bool
|
||||
become: false
|
||||
|
||||
- name: 下载压缩文件到本地
|
||||
- name: 下载到本地
|
||||
ansible.posix.synchronize:
|
||||
src: "{{ log_base_path }}/{{ year }}/{{ month }}/{{ item.path | basename }}"
|
||||
dest: "{{ local_download_path }}/{{ label }}/{{ year }}/{{ month }}/"
|
||||
@@ -87,15 +90,14 @@
|
||||
- "--partial"
|
||||
- "--progress"
|
||||
with_items: "{{ compressed_files.files }}"
|
||||
when: download_to_local
|
||||
become: true
|
||||
when: download_to_local | bool
|
||||
|
||||
- name: 删除服务器上的压缩文件
|
||||
- name: 删除压缩文件
|
||||
ansible.builtin.file:
|
||||
path: "{{ item.path }}"
|
||||
state: absent
|
||||
with_items: "{{ compressed_files.files }}"
|
||||
when: remove_local_archives and download_to_local
|
||||
when: remove_local_archives | bool and download_to_local | bool
|
||||
become: true
|
||||
|
||||
- name: 完成信息
|
||||
|
||||
Reference in New Issue
Block a user