128 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
| ---
 | |
| - name: Docker Container Management
 | |
|   hosts: all
 | |
|   become: yes
 | |
|   gather_facts: yes
 | |
|   
 | |
|   tasks:
 | |
|     # 检查 Docker 是否安装
 | |
|     - name: Check if Docker is installed
 | |
|       command: which docker
 | |
|       register: docker_installed
 | |
|       failed_when: false
 | |
|       changed_when: false
 | |
|       
 | |
|     - name: Skip Docker tasks if not installed
 | |
|       debug:
 | |
|         msg: "Docker not installed on {{ inventory_hostname }}, skipping Docker tasks"
 | |
|       when: docker_installed.rc != 0
 | |
|       
 | |
|     # Docker 系统信息
 | |
|     - name: Get Docker system info
 | |
|       shell: docker system df
 | |
|       register: docker_system_info
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     - name: Display Docker system usage
 | |
|       debug:
 | |
|         msg: "🐳 Docker System Usage: {{ docker_system_info.stdout_lines }}"
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     # 检查运行中的容器
 | |
|     - name: List running containers
 | |
|       shell: docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
 | |
|       register: running_containers
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     - name: Display running containers
 | |
|       debug:
 | |
|         msg: "📦 Running Containers: {{ running_containers.stdout_lines }}"
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     # 检查停止的容器
 | |
|     - name: List stopped containers
 | |
|       shell: docker ps -a --filter "status=exited" --format "table {{.Names}}\t{{.Status}}"
 | |
|       register: stopped_containers
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     - name: Display stopped containers
 | |
|       debug:
 | |
|         msg: "⏹️  Stopped Containers: {{ stopped_containers.stdout_lines }}"
 | |
|       when: docker_installed.rc == 0 and stopped_containers.stdout_lines | length > 1
 | |
|       
 | |
|     # 检查 Docker 镜像
 | |
|     - name: List Docker images
 | |
|       shell: docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
 | |
|       register: docker_images
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     - name: Display Docker images
 | |
|       debug:
 | |
|         msg: "🖼️  Docker Images: {{ docker_images.stdout_lines }}"
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     # 检查悬空镜像
 | |
|     - name: Check for dangling images
 | |
|       shell: docker images -f "dangling=true" -q
 | |
|       register: dangling_images
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     - name: Report dangling images
 | |
|       debug:
 | |
|         msg: "🗑️  Found {{ dangling_images.stdout_lines | length }} dangling images"
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     # 检查 Docker 卷
 | |
|     - name: List Docker volumes
 | |
|       shell: docker volume ls
 | |
|       register: docker_volumes
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     - name: Display Docker volumes
 | |
|       debug:
 | |
|         msg: "💾 Docker Volumes: {{ docker_volumes.stdout_lines }}"
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     # 检查 Docker 网络
 | |
|     - name: List Docker networks
 | |
|       shell: docker network ls
 | |
|       register: docker_networks
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     - name: Display Docker networks
 | |
|       debug:
 | |
|         msg: "🌐 Docker Networks: {{ docker_networks.stdout_lines }}"
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     # 检查容器资源使用
 | |
|     - name: Check container resource usage
 | |
|       shell: docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
 | |
|       register: container_stats
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     - name: Display container resource usage
 | |
|       debug:
 | |
|         msg: "📊 Container Stats: {{ container_stats.stdout_lines }}"
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     # 检查 Docker 服务状态
 | |
|     - name: Check Docker service status
 | |
|       systemd:
 | |
|         name: docker
 | |
|       register: docker_service_status
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     - name: Display Docker service status
 | |
|       debug:
 | |
|         msg: "🔧 Docker Service: {{ docker_service_status.status.ActiveState }}"
 | |
|       when: docker_installed.rc == 0
 | |
|       
 | |
|     # 清理建议
 | |
|     - name: Suggest cleanup if needed
 | |
|       debug:
 | |
|         msg: |
 | |
|           💡 Cleanup suggestions:
 | |
|           - Run 'docker system prune -f' to remove unused data
 | |
|           - Run 'docker image prune -f' to remove dangling images
 | |
|           - Run 'docker volume prune -f' to remove unused volumes          
 | |
|       when: docker_installed.rc == 0 and (dangling_images.stdout_lines | length > 0 or stopped_containers.stdout_lines | length > 1) |