c161c4487ac3b24f0d0d1d9e6a087a6c6d88e2b3
- 后端: inventory生成时写入主机自定义变量(host_vars) - 前端: 主机编辑表单新增'主机变量'输入区(key=value格式) - 模板: ipmitool-bmc改为读取主机变量,未配置时用默认值 - 示例: 每台主机设置 bmc_ip=10.10.10.x,Playbook自动区分 - 变量写入inventory: web ansible_host=... bmc_ip=10.10.10.1
⚡ Ansible Deploy Pro
基于 Go + Ansible 的企业级批量运维部署平台,支持 SSH 密钥管理、Playbook 模板中心、文件分发、实时日志流等功能。
✨ 功能特性
- 🎨 现代化 Web 界面 - 暗色玻璃拟态设计,侧边栏导航,流畅动画
- 🖥️ 主机管理 - 支持密码/SSH密钥双认证,连接测试,分组管理
- 🔑 SSH 密钥库 - 集中管理 SSH 私钥,自动指纹识别
- 📜 Playbook 管理 - 在线编辑、变量解析、执行选项配置
- 🏪 模板中心 - 20+ 预置模板(Docker/Nginx/MySQL/Redis/安全加固/监控等),一键创建
- 📦 文件分发 - 批量分发文件/内容到远程主机
- 💻 命令执行 - 批量并行/串行执行命令,快捷命令
- 📊 任务中心 - SSE 实时日志流,进度追踪,任务取消
- 📈 仪表盘 - 主机状态概览、任务统计、系统信息
🚀 快速开始
1. 安装依赖
# 安装 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. 构建
cd ansible-deploy
go mod tidy
go build -o ansible-deploy cmd/main.go
3. 启动
# 默认端口 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
Description
Languages
Go
98.1%
Shell
1.9%