|
|
||
|---|---|---|
| ansible | ||
| scripts | ||
| README.md | ||
| config.json | ||
| keys-info.md | ||
| semaphore-setup-guide.md | ||
README.md
🛠️ 服务器管理自动化项目
这是一个基于 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:
# 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. 使用运维管理脚本
# 给脚本执行权限
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: 便捷的命令行管理工具
🤖 自动化定时任务
设置自动化定时任务:
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: 安全检查
查看自动化状态:
automation-status
📊 使用 Semaphore Web UI
参考 semaphore-setup-guide.md 文件设置 Semaphore Web 界面管理。
推送到 Gitea 后,Semaphore 可以:
- ✅ 直接识别 Ansible 项目结构
- ✅ 使用现有的 inventory 分组
- ✅ 运行预定义的 playbooks
- ✅ 支持按组选择性更新
- ✅ 提供 Web 界面管理和监控
💡 最佳实践
日常运维
# 每日快速检查
./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
紧急情况
# 紧急安全更新
./scripts/ops-manager.sh update all
# 网络问题诊断
./scripts/ops-manager.sh network all
# 服务状态检查
./scripts/ops-manager.sh health all
容器管理
# LXC 容器管理
./scripts/ops-manager.sh docker lxc
./scripts/ops-manager.sh cleanup lxc
# Alpine 容器更新
./scripts/ops-manager.sh update alpine
🔧 高级用法
按组管理
# 物理机维护
./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
检查模式
# 检查更新但不执行
./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
🆘 故障排除
连接问题
# 测试连接
ansible all -i ansible/inventory.ini -m ping
# 检查特定组
ansible lxc -i ansible/inventory.ini -m ping -e "ansible_ssh_pass=313131"
权限问题
# 检查 sudo 权限
ansible all -i ansible/inventory.ini -m shell -a "whoami" --become
日志查看
# 查看自动化日志
ls -la /var/log/*-*.log
tail -f /var/log/daily-health-check.log
🎯 运维脚本使用示例
系统更新
# 更新所有服务器
./scripts/ops-manager.sh update all
# 更新特定组
./scripts/ops-manager.sh update lxc
./scripts/ops-manager.sh update alpine
./scripts/ops-manager.sh update proxmox
系统清理
# 清理所有服务器
./scripts/ops-manager.sh cleanup all
# 清理特定组
./scripts/ops-manager.sh cleanup lxc
健康检查
# 检查所有服务器健康状态
./scripts/ops-manager.sh health all
# 检查特定组
./scripts/ops-manager.sh health proxmox
Docker 管理
# 管理 LXC 组的 Docker
./scripts/ops-manager.sh docker lxc
# 检查 Docker 状态
./scripts/ops-manager.sh docker all
网络诊断
# 检查网络连通性
./scripts/ops-manager.sh network all
# 检查特定组网络
./scripts/ops-manager.sh network germany
证书管理
# 检查所有证书
./scripts/ops-manager.sh cert all
# 检查特定组证书
./scripts/ops-manager.sh cert proxmox
安全检查
# 安全检查(检查模式)
./scripts/ops-manager.sh security all --check
# 执行安全加固
./scripts/ops-manager.sh security all
运维工具包
# 运行完整的运维工具包
./scripts/ops-manager.sh toolkit all
# 检查特定服务器
./scripts/ops-manager.sh toolkit germany
📈 监控和日志
自动化监控
# 查看自动化状态
automation-status
# 查看定时任务
crontab -l
# 查看最近的健康检查
tail -20 /var/log/daily-health-check.log
手动日志查看
# 查看所有自动化日志
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