feat: v2.0 全面升级 - SSH密钥管理/模板中心/文件分发/全新UI

- 新增SSH密钥库管理(集中托管私钥、自动指纹识别)
- 新增模板中心(24个预置模板,7大分类,一键创建Playbook)
- 新增文件分发功能(内容/文件双模式,权限设置)
- 新增系统信息接口(版本/主机数/运行时间)
- 主机支持密码/SSH密钥双认证方式
- 全新暗色玻璃拟态UI(侧边栏导航、SSE实时日志流)
- 修复UpdateHost ID丢失bug
- 添加.gitignore排除敏感数据
This commit is contained in:
cnbugs
2026-07-30 22:49:13 +08:00
parent ecb8afd732
commit bdb7d54505
15 changed files with 4011 additions and 2569 deletions
+104 -149
View File
@@ -1,96 +1,86 @@
# Ansible批量部署工具
# Ansible Deploy Pro
基于 Go + Ansible 的批量运维部署系统,支持批量执行命令、Playbook管理、主机分组等功能。
基于 Go + Ansible 的企业级批量运维部署平台,支持 SSH 密钥管理、Playbook 模板中心、文件分发、实时日志流等功能。
## 功能特性
## 功能特性
- 🌐 **Web界面** - 简洁美观的Web管理界面
- 🖥️ **主机管理** - 支持添加、删除、编辑主机
- 📁 **分组管理** - 灵活的主机组管理
- 💻 **命令执行** - 批量并行/串行执行命令
- 📜 **Playbook管理** - 预置Playbook模板,支持快速执行
- 📊 **任务跟踪** - 实时任务进度监控
- 🔄 **自动刷新** - 数据自动同步
- 🎨 **现代化 Web 界面** - 暗色玻璃拟态设计,侧边栏导航,流畅动画
- 🖥️ **主机管理** - 支持密码/SSH密钥双认证,连接测试,分组管理
- 🔑 **SSH 密钥库** - 集中管理 SSH 私钥,自动指纹识别
- 📜 **Playbook 管理** - 在线编辑、变量解析、执行选项配置
- 🏪 **模板中心** - 20+ 预置模板(Docker/Nginx/MySQL/Redis/安全加固/监控等),一键创建
- 📦 **文件分发** - 批量分发文件/内容到远程主机
- 💻 **命令执行** - 批量并行/串行执行命令,快捷命令
- 📊 **任务中心** - SSE 实时日志流,进度追踪,任务取消
- 📈 **仪表盘** - 主机状态概览、任务统计、系统信息
## 快速开始
## 🚀 快速开始
### 1. 安装依赖
```bash
# 安装Go
# 安装 Go
curl -fsSL https://go.dev/dl/go1.21.linux-amd64.tar.gz | tar -C /usr/local -xzf -
# 安装Ansible
# 安装 Ansible
pip install ansible
# 安装SSH
# 安装 SSH
apt install openssh-client # Debian/Ubuntu
yum install openssh-clients # CentOS/RHEL
```
### 2. 构建项目
### 2. 构建
```bash
cd /root/ansible-deploy
cd ansible-deploy
go mod tidy
go build -o ansible-deploy cmd/main.go
```
### 3. 配置SSH免密登录
### 3. 启动
```bash
# 生成SSH密钥
ssh-keygen -t rsa
# 复制到目标主机
ssh-copy-id user@hostname
```
### 4. 启动服务
```bash
# 默认端口8080
# 默认端口 8080
./ansible-deploy
# 自定义端口
./ansible-deploy -port 9000
# 自定义配置
./ansible-deploy -config /path/to/config.yaml
# 自定义端口和配置
./ansible-deploy -port 9000 -config /path/to/config.yaml
```
### 5. 访问Web界面
### 4. 访问
打开浏览器访问: `http://localhost:8080`
打开浏览器: `http://localhost:8080`
## 配置说明
## 📁 目录结构
配置文件位于 `config/config.yaml`:
```yaml
# Ansible路径
ansible_path: /usr/bin/ansible
# 资产清单目录
inventory_dir: ~/ansible-deploy/inventory
# Playbook目录
playbook_dir: ~/ansible-deploy/playbooks
# 日志目录
log_dir: ~/ansible-deploy/logs
# SSH超时(秒)
ssh_timeout: 30
# 最大并发数
max_parallelism: 10
```
ansible-deploy/
├── cmd/
│ └── main.go # 主程序入口
├── config/
│ └── config.yaml # 配置文件
├── internal/
│ ├── handlers/
│ │ └── handlers.go # HTTP 处理器
│ ├── models/
│ │ └── models.go # 数据模型
│ └── services/
│ ├── ansible.go # Ansible 核心服务
│ ├── config.go # 配置加载
│ └── templates.go # Playbook 模板库
├── web/dist/
│ └── index.html # 前端界面
├── playbooks/ # Playbook 目录
├── inventory/ # 资产清单
│ ├── hosts.json # 主机数据
│ ├── groups.json # 分组数据
│ └── ssh_keys/ # SSH 密钥存储
└── README.md
```
## API接口
## 🔌 API 接口
### 主机管理
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/hosts` | 获取主机列表 |
@@ -100,113 +90,78 @@ max_parallelism: 10
| POST | `/api/hosts/test/:id` | 测试连接 |
### 主机组
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/groups` | 获取组列表 |
| POST | `/api/groups` | 创建组 |
| PUT | `/api/groups/:name` | 更新组 |
| DELETE | `/api/groups/:name` | 删除组 |
### 命令执行
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/api/command/execute` | 执行命令 |
| POST | `/api/command/batch` | 批量执行 |
### Playbook
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/playbooks` | 列出Playbook |
| POST | `/api/playbooks/execute` | 执行Playbook |
| GET | `/api/playbooks` | 列出 Playbook |
| POST | `/api/playbooks` | 创建 Playbook |
| GET | `/api/playbooks/:name/content` | 获取内容 |
| PUT | `/api/playbooks/:name` | 更新 Playbook |
| DELETE | `/api/playbooks/:name` | 删除 Playbook |
| POST | `/api/playbooks/execute` | 执行 Playbook |
### 模板中心
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/templates` | 列出模板 |
| GET | `/api/templates/categories` | 模板分类 |
| GET | `/api/templates/:id` | 模板详情 |
| POST | `/api/templates/deploy` | 从模板创建 |
### SSH 密钥
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/sshkeys` | 列出密钥 |
| POST | `/api/sshkeys` | 添加密钥 |
| DELETE | `/api/sshkeys/:name` | 删除密钥 |
### 文件分发
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/api/files/distribute` | 分发文件 |
### 任务
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/tasks` | 获取任务列表 |
| GET | `/api/tasks/:id` | 获取任务详情 |
| GET | `/api/tasks` | 任务列表 |
| GET | `/api/tasks/:id` | 任务详情 |
| GET | `/api/tasks/:id/stream` | SSE 实时日志 |
| DELETE | `/api/tasks/:id` | 取消任务 |
## 使用示例
### 系统
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/system/info` | 系统信息 |
### 添加主机
## 📋 预置模板
```bash
curl -X POST http://localhost:8080/api/hosts \
-H "Content-Type: application/json" \
-d '{
"name": "web-server-01",
"ip": "192.168.1.100",
"port": 22,
"username": "root",
"password": "your-password",
"groups": ["webservers"]
}'
```
### 批量执行命令
```bash
curl -X POST http://localhost:8080/api/command/batch \
-H "Content-Type: application/json" \
-d '{
"hosts": ["web1", "web2", "web3"],
"command": "df -h",
"parallel": true
}'
```
### 执行Playbook
```bash
curl -X POST http://localhost:8080/api/playbooks/execute \
-H "Content-Type: application/json" \
-d '{
"name": "update-packages",
"hosts": ["all"],
"extra_vars": {}
}'
```
## 预置Playbook
| 文件 | 说明 |
|------|------|
| `update-packages.yml` | 更新系统包 |
| `deploy-docker.yml` | 安装Docker |
| `deploy-nginx.yml` | 部署Nginx |
| `check-system.yml` | 系统信息检查 |
## 目录结构
```
ansible-deploy/
├── cmd/
│ └── main.go # 主程序入口
├── config/
│ └── config.yaml # 配置文件
├── internal/
│ ├── handlers/ # HTTP处理器
│ ├── models/ # 数据模型
│ └── services/ # 业务逻辑
├── web/
│ └── dist/
│ └── index.html # 前端页面
├── playbooks/ # Playbook目录
├── scripts/
│ └── install.sh # 安装脚本
└── README.md
```
## 注意事项
1. **SSH免密** - 建议配置SSH密钥对实现免密登录
2. **权限** - 部分操作需要sudo权限,确保用户有sudo权限
3. **防火墙** - 确保SSH端口开放
4. **Python** - Ansible需要目标主机安装Python
| 分类 | 模板 | 说明 |
|------|------|------|
| 🖥️ 系统管理 | 系统包更新 | 自动更新软件包 |
| | 系统信息采集 | 采集 OS/硬件/网络信息 |
| | 资源监控检查 | CPU/内存/磁盘告警 |
| | 日志清理 | 清理日志和临时文件 |
| | 时间同步(NTP) | 配置 chrony 时间同步 |
| 🌐 Web服务 | 部署 Nginx | 安装配置 Nginx + 反向代理 |
| | 部署 Apache | 安装配置 Apache |
| 🗄️ 数据库 | 部署 MySQL | 安装 MySQL + 基础优化 |
| | 部署 Redis | 安装 Redis + 内存配置 |
| | 部署 PostgreSQL | 安装 PostgreSQL |
| 🐳 容器化 | 部署 Docker | Docker CE + 镜像加速 |
| | 部署 Portainer | 容器管理面板 |
| 🔧 DevOps | 部署 Node.js | Node.js + PM2 |
| | 部署 Python 应用 | Gunicorn + Systemd |
| | 数据备份 | 定时备份 + 自动清理 |
| 🔒 安全加固 | 安全加固 | SSH加固 + 防火墙 + fail2ban |
| | SSL 证书部署 | Let's Encrypt 自动申请 |
| 📊 监控告警 | 部署 Node Exporter | Prometheus 指标采集 |
| | 部署 Grafana | 可视化监控面板 |
## License