# ⚡ Ansible Deploy Pro 基于 Go + Ansible 的企业级批量运维部署平台,支持 SSH 密钥管理、Playbook 模板中心、文件分发、实时日志流等功能。 ## ✨ 功能特性 - 🎨 **现代化 Web 界面** - 暗色玻璃拟态设计,侧边栏导航,流畅动画 - 🖥️ **主机管理** - 支持密码/SSH密钥双认证,连接测试,分组管理 - 🔑 **SSH 密钥库** - 集中管理 SSH 私钥,自动指纹识别 - 📜 **Playbook 管理** - 在线编辑、变量解析、执行选项配置 - 🏪 **模板中心** - 20+ 预置模板(Docker/Nginx/MySQL/Redis/安全加固/监控等),一键创建 - 📦 **文件分发** - 批量分发文件/内容到远程主机 - 💻 **命令执行** - 批量并行/串行执行命令,快捷命令 - 📊 **任务中心** - SSE 实时日志流,进度追踪,任务取消 - 📈 **仪表盘** - 主机状态概览、任务统计、系统信息 ## 🚀 快速开始 ### 1. 安装依赖 ```bash # 安装 Go curl -fsSL https://go.dev/dl/go1.21.linux-amd64.tar.gz | tar -C /usr/local -xzf - # 安装 Ansible pip install ansible # 安装 SSH apt install openssh-client # Debian/Ubuntu ``` ### 2. 构建 ```bash cd ansible-deploy go mod tidy go build -o ansible-deploy cmd/main.go ``` ### 3. 启动 ```bash # 默认端口 8080 ./ansible-deploy # 自定义端口和配置 ./ansible-deploy -port 9000 -config /path/to/config.yaml ``` ### 4. 访问 打开浏览器: `http://localhost:8080` ## 📁 目录结构 ``` 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 接口 ### 主机管理 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/hosts` | 获取主机列表 | | POST | `/api/hosts` | 添加主机 | | PUT | `/api/hosts/:id` | 更新主机 | | DELETE | `/api/hosts/:id` | 删除主机 | | POST | `/api/hosts/test/:id` | 测试连接 | ### 主机组 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/groups` | 获取组列表 | | POST | `/api/groups` | 创建组 | | DELETE | `/api/groups/:name` | 删除组 | ### 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/:id/stream` | SSE 实时日志 | | DELETE | `/api/tasks/:id` | 取消任务 | ### 系统 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/system/info` | 系统信息 | ## 📋 预置模板 | 分类 | 模板 | 说明 | |------|------|------| | 🖥️ 系统管理 | 系统包更新 | 自动更新软件包 | | | 系统信息采集 | 采集 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 MIT License