---
- name: 磁盘清理工具
  hosts: all
  become: yes
  vars:
    cleanup_logs: true
    cleanup_cache: true
    cleanup_temp: true
    cleanup_containers: false  # 谨慎操作
    
  tasks:
    - name: 检查磁盘使用情况 (清理前)
      shell: df -h
      register: disk_before
      
    - name: 显示清理前磁盘使用情况
      debug:
        msg: |
          === {{ inventory_hostname }} 清理前磁盘使用情况 ===
          {{ disk_before.stdout }}
          
    - name: 清理系统日志 (保留最近7天)
      shell: |
        journalctl --vacuum-time=7d
        find /var/log -name "*.log" -type f -mtime +7 -exec truncate -s 0 {} \;
        find /var/log -name "*.log.*" -type f -mtime +7 -delete
      when: cleanup_logs | bool
      register: log_cleanup
      
    - name: 清理包管理器缓存
      block:
        - name: 清理 APT 缓存 (Debian/Ubuntu)
          shell: |
            apt-get clean
            apt-get autoclean
            apt-get autoremove -y
          when: ansible_os_family == "Debian"
          
        - name: 清理 YUM/DNF 缓存 (RedHat/CentOS)
          shell: |
            if command -v dnf >/dev/null 2>&1; then
              dnf clean all
            elif command -v yum >/dev/null 2>&1; then
              yum clean all
            fi
          when: ansible_os_family == "RedHat"
      when: cleanup_cache | bool
      
    - name: 清理临时文件
      shell: |
        find /tmp -type f -atime +7 -delete 2>/dev/null || true
        find /var/tmp -type f -atime +7 -delete 2>/dev/null || true
        rm -rf /tmp/.* 2>/dev/null || true
      when: cleanup_temp | bool
      
    - name: 清理 Podman 资源 (谨慎操作)
      block:
        - name: 停止所有容器
          shell: podman stop --all
          ignore_errors: yes
          
        - name: 删除未使用的容器
          shell: podman container prune -f
          ignore_errors: yes
          
        - name: 删除未使用的镜像
          shell: podman image prune -f
          ignore_errors: yes
          
        - name: 删除未使用的卷
          shell: podman volume prune -f
          ignore_errors: yes
      when: cleanup_containers | bool
      
    - name: 清理核心转储文件
      shell: |
        find /var/crash -name "core.*" -type f -delete 2>/dev/null || true
        find / -name "core" -type f -size +10M -delete 2>/dev/null || true
      ignore_errors: yes
      
    - name: 检查磁盘使用情况 (清理后)
      shell: df -h
      register: disk_after
      
    - name: 显示清理结果
      debug:
        msg: |
          === {{ inventory_hostname }} 清理完成 ===
          
          清理前:
          {{ disk_before.stdout }}
          
          清理后:
          {{ disk_after.stdout }}
          
          🧹 清理操作完成!