# 🛠️ 服务器管理自动化项目 这是一个基于 Ansible 的服务器管理自动化项目,用于管理多台服务器的系统更新、配置和维护。 ## 📁 项目结构 ``` mgmt/ ├── ansible/ │ ├── inventory.ini # 服务器清单 │ ├── ansible.cfg # Ansible 配置 │ ├── system-update.yml # 系统更新 playbook │ ├── cloud-providers-update.yml # 云服务商更新 playbook │ ├── system-cleanup.yml # 系统清理和维护 │ ├── service-health-check.yml # 服务健康检查 │ ├── security-hardening.yml # 安全加固和备份 │ ├── docker-management.yml # Docker 容器管理 │ ├── network-connectivity.yml # 网络连通性检查 │ ├── certificate-management.yml # SSL 证书管理 │ ├── ops-toolkit.yml # 运维工具包 │ ├── cron-setup.yml # 定时任务配置 │ └── run.sh # 执行脚本 ├── scripts/ │ └── ops-manager.sh # 运维管理脚本 ├── config.json # Semaphore 配置 ├── keys-info.md # SSH 密钥信息 ├── semaphore-setup-guide.md # Semaphore 设置指南 └── README.md # 项目说明 ``` ## 🚀 快速开始 ### 1. 环境准备 确保已安装 Ansible: ```bash # Ubuntu/Debian sudo apt update && sudo apt install ansible # CentOS/RHEL sudo yum install ansible ``` ### 2. 配置服务器清单 编辑 `ansible/inventory.ini` 文件,服务器已按功能分组: - **lxc**: Debian/Ubuntu 容器 - **alpine**: Alpine Linux 容器 - **proxmox**: Proxmox VE 物理机 - **armbian**: ARM 设备 - **hcp**: HCP 云服务器 - **feiniu**: 飞牛服务器 - **germany**: 德国服务器 - 以及各种云服务商组 ### 3. 使用运维管理脚本 ```bash # 给脚本执行权限 chmod +x scripts/ops-manager.sh # 交互式模式 ./scripts/ops-manager.sh # 直接执行 ./scripts/ops-manager.sh update lxc # 更新 LXC 容器 ./scripts/ops-manager.sh cleanup all # 清理所有服务器 ./scripts/ops-manager.sh health proxmox # 检查 Proxmox 健康状态 ./scripts/ops-manager.sh docker lxc # 管理 LXC 中的 Docker ./scripts/ops-manager.sh toolkit germany # 运行德国服务器工具包 # 检查模式(不做实际更改) ./scripts/ops-manager.sh update all --check ``` ## 🛠️ 可用的运维脚本 ### 核心功能 - **system-update.yml**: 系统包更新 - **system-cleanup.yml**: 磁盘清理、日志清理、缓存清理 - **service-health-check.yml**: 服务状态监控 - **security-hardening.yml**: 安全加固和备份 ### 专业工具 - **docker-management.yml**: Docker 容器和镜像管理 - **network-connectivity.yml**: 网络连通性和性能测试 - **certificate-management.yml**: SSL 证书监控和管理 - **ops-toolkit.yml**: 统一运维仪表板 ### 自动化 - **cron-setup.yml**: 配置定时任务自动化 - **ops-manager.sh**: 便捷的命令行管理工具 ## 🤖 自动化定时任务 设置自动化定时任务: ```bash ansible-playbook -i ansible/inventory.ini ansible/cron-setup.yml ``` 配置的定时任务: - **每日 08:00**: 系统健康检查 - **每日 01:00**: Docker 清理 (LXC 组) - **每周日 02:00**: 系统清理 - **每周一 04:30**: 证书检查 - **每周二 06:00**: 网络连通性检查 - **每月1日 03:00**: 安全检查 查看自动化状态: ```bash automation-status ``` ## 📊 使用 Semaphore Web UI 参考 `semaphore-setup-guide.md` 文件设置 Semaphore Web 界面管理。 推送到 Gitea 后,Semaphore 可以: - ✅ 直接识别 Ansible 项目结构 - ✅ 使用现有的 inventory 分组 - ✅ 运行预定义的 playbooks - ✅ 支持按组选择性更新 - ✅ 提供 Web 界面管理和监控 ## 💡 最佳实践 ### 日常运维 ```bash # 每日快速检查 ./scripts/ops-manager.sh toolkit all # 每周系统维护 ./scripts/ops-manager.sh cleanup all ./scripts/ops-manager.sh health all # 每月安全检查 ./scripts/ops-manager.sh security all --check ./scripts/ops-manager.sh cert all ``` ### 紧急情况 ```bash # 紧急安全更新 ./scripts/ops-manager.sh update all # 网络问题诊断 ./scripts/ops-manager.sh network all # 服务状态检查 ./scripts/ops-manager.sh health all ``` ### 容器管理 ```bash # LXC 容器管理 ./scripts/ops-manager.sh docker lxc ./scripts/ops-manager.sh cleanup lxc # Alpine 容器更新 ./scripts/ops-manager.sh update alpine ``` ## 🔧 高级用法 ### 按组管理 ```bash # 物理机维护 ./scripts/ops-manager.sh cleanup proxmox ./scripts/ops-manager.sh health armbian # 云服务商管理 ./scripts/ops-manager.sh update huawei ./scripts/ops-manager.sh network google # 容器管理 ./scripts/ops-manager.sh docker lxc ./scripts/ops-manager.sh update alpine ``` ### 检查模式 ```bash # 检查更新但不执行 ./scripts/ops-manager.sh update all --check # 详细输出 ./scripts/ops-manager.sh health all --verbose # 仅显示命令 ./scripts/ops-manager.sh cleanup all --dry-run ``` ## 📋 服务器组说明 - **lxc**: Debian/Ubuntu 容器 (warden, gitea, mysql, postgresql, influxdb) - **alpine**: Alpine Linux 容器 (redis, authentik, calibreweb) - **proxmox**: Proxmox VE 物理机 (pve, xgp, nuc12) - **armbian**: ARM 设备 (onecloud1) - **hcp**: HCP 云服务器 (hcp1, hcp2) - **feiniu**: 飞牛服务器 (snail) - **germany**: 德国服务器 (de) - **dev**: 开发服务器 (dev1, dev2) - **oci_kr/oci_us**: Oracle 云服务器 - **huawei/google/aws**: 各云服务商 ## 📝 注意事项 - 确保 SSH 密钥已正确配置 - LXC 组更新需要顺序执行,避免同时更新 - Alpine 容器使用 `apk` 包管理器 - 建议先在测试环境验证 - 定期备份重要数据 - 监控自动化日志:`tail -f /var/log/daily-health-check.log` ## 🆘 故障排除 ### 连接问题 ```bash # 测试连接 ansible all -i ansible/inventory.ini -m ping # 检查特定组 ansible lxc -i ansible/inventory.ini -m ping -e "ansible_ssh_pass=313131" ``` ### 权限问题 ```bash # 检查 sudo 权限 ansible all -i ansible/inventory.ini -m shell -a "whoami" --become ``` ### 日志查看 ```bash # 查看自动化日志 ls -la /var/log/*-*.log tail -f /var/log/daily-health-check.log ``` ## 🎯 运维脚本使用示例 ### 系统更新 ```bash # 更新所有服务器 ./scripts/ops-manager.sh update all # 更新特定组 ./scripts/ops-manager.sh update lxc ./scripts/ops-manager.sh update alpine ./scripts/ops-manager.sh update proxmox ``` ### 系统清理 ```bash # 清理所有服务器 ./scripts/ops-manager.sh cleanup all # 清理特定组 ./scripts/ops-manager.sh cleanup lxc ``` ### 健康检查 ```bash # 检查所有服务器健康状态 ./scripts/ops-manager.sh health all # 检查特定组 ./scripts/ops-manager.sh health proxmox ``` ### Docker 管理 ```bash # 管理 LXC 组的 Docker ./scripts/ops-manager.sh docker lxc # 检查 Docker 状态 ./scripts/ops-manager.sh docker all ``` ### 网络诊断 ```bash # 检查网络连通性 ./scripts/ops-manager.sh network all # 检查特定组网络 ./scripts/ops-manager.sh network germany ``` ### 证书管理 ```bash # 检查所有证书 ./scripts/ops-manager.sh cert all # 检查特定组证书 ./scripts/ops-manager.sh cert proxmox ``` ### 安全检查 ```bash # 安全检查(检查模式) ./scripts/ops-manager.sh security all --check # 执行安全加固 ./scripts/ops-manager.sh security all ``` ### 运维工具包 ```bash # 运行完整的运维工具包 ./scripts/ops-manager.sh toolkit all # 检查特定服务器 ./scripts/ops-manager.sh toolkit germany ``` ## 📈 监控和日志 ### 自动化监控 ```bash # 查看自动化状态 automation-status # 查看定时任务 crontab -l # 查看最近的健康检查 tail -20 /var/log/daily-health-check.log ``` ### 手动日志查看 ```bash # 查看所有自动化日志 ls -la /var/log/*-*.log # 实时监控日志 tail -f /var/log/daily-health-check.log # 查看清理日志 cat /var/log/weekly-cleanup.log ``` ## 🔄 定期维护建议 ### 每日 - 运行 `./scripts/ops-manager.sh toolkit all` 快速检查 - 查看 `automation-status` 了解自动化状态 ### 每周 - 运行 `./scripts/ops-manager.sh cleanup all` 系统清理 - 运行 `./scripts/ops-manager.sh health all` 健康检查 - 检查 `/var/log/` 下的日志文件 ### 每月 - 运行 `./scripts/ops-manager.sh security all --check` 安全检查 - 运行 `./scripts/ops-manager.sh cert all` 证书检查 - 运行 `./scripts/ops-manager.sh network all` 网络检查 ### 按需 - 系统更新:`./scripts/ops-manager.sh update [group]` - Docker 清理:`./scripts/ops-manager.sh docker lxc` - 网络诊断:`./scripts/ops-manager.sh network all` ## 许可证 MIT License