# ansible_executor **Repository Path**: yan_wlog/ansible_executor ## Basic Information - **Project Name**: ansible_executor - **Description**: No description available - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-11 - **Last Updated**: 2026-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ansible 测试控制台 一个功能完善的 Ansible Playbook 开发与测试平台,支持纯前端模拟和真实后端联动两种运行模式。 ## ✨ 功能特性 ### 🎯 核心功能 - **Playbook 管理**:多 Playbook 创建、编辑、删除,支持 YAML 语法高亮和智能提示 - **主机管理**:分组式主机清单管理,支持变量配置、导入导出 - **任务执行**:可视化执行控制台,实时日志输出,执行历史记录 - **模式切换**:支持 mock(纯前端)、backend(后端联动)、config(配置文件驱动)三种模式 ### 🛠️ 技术特性 - **Monaco Editor**:专业级 YAML 编辑器,支持语法高亮、自动补全、错误提示 - **响应式设计**:完美适配桌面端和移动端 - **本地存储**:Mock 模式下所有数据保存在 localStorage,无需后端 - **RESTful API**:后端提供完整的 REST API,支持跨域访问 - **SSE 流式日志**:实时推送执行日志,流畅的流式输出体验 ## 📁 项目结构 ``` ansible-test-console/ ├── index.html # 仪表盘首页 ├── playbooks.html # Playbook 管理页面 ├── hosts.html # 主机管理页面 ├── execute.html # 执行控制页面 ├── config.json # 配置文件 ├── start.py # Python 启动脚本 ├── README.md # 项目文档 ├── css/ │ └── common.css # 公共样式 ├── js/ │ ├── config.js # 配置管理模块 │ ├── utils.js # 工具函数库 │ ├── components.js # UI 组件库 │ ├── api.js # API 封装层 │ ├── dashboard.js # 仪表盘模块 │ ├── playbook-editor.js # Playbook 编辑器 │ ├── hosts-manager.js # 主机管理模块 │ └── executor.js # 执行控制模块 └── server/ ├── app.py # Flask 后端主入口 ├── ansible_runner.py # Ansible 执行封装 └── requirements.txt # Python 依赖 ``` ## 🚀 快速开始 ### 方式一:纯前端模式(推荐新手) 1. 直接用浏览器打开 `index.html` 2. 所有功能立即可用,数据保存在浏览器本地 3. 适合快速体验、学习 Ansible、无 Python 环境 ### 方式二:后端联动模式 #### 前置要求 - Python 3.8+ - pip 包管理器 - Ansible(可选,用于真实执行) #### 安装步骤 ```bash # 1. 进入项目目录 cd ansible-test-console # 2. 安装 Python 依赖 pip install -r server/requirements.txt # 3. 启动后端服务 python start.py # 4. 打开浏览器访问 # 直接打开 index.html 或使用静态服务器 python -m http.server 8080 # 访问 http://localhost:8080 ``` #### 配置模式切换 编辑 `config.json`: ```json { "mode": "mock" // 改为 "backend" 启用后端联动 } ``` 或在仪表盘页面点击模式切换按钮。 ## ⚙️ 配置说明 ### config.json 结构 ```json { "version": "1.0.0", "mode": "mock", "backend": { "host": "0.0.0.0", "port": 5000, "timeout": 30 }, "frontend": { "port": 8080, "theme": "light" }, "data": { "playbooks": [...], "hosts": [...], "groups": [...] } } ``` ### 运行模式说明 | 模式 | 说明 | 使用场景 | |------|------|---------| | `mock` | 纯前端模拟,数据保存在 localStorage | 快速体验、学习、无后端环境 | | `backend` | 连接真实后端,调用 Ansible 执行 | 生产使用、真实 Playbook 测试 | | `config` | 由配置文件决定,可手动切换 | 团队共享配置、灵活部署 | ## 📖 使用指南 ### 1. Playbook 管理 1. 进入「Playbook」页面 2. 点击「新建 Playbook」创建空白文件或从模板创建 3. 使用 Monaco Editor 编写 YAML 内容 4. 支持语法检查、自动保存、模板插入 5. 可重命名、复制、删除 Playbook ### 2. 主机管理 1. 进入「主机」页面 2. 创建主机组,添加主机到组 3. 编辑主机信息:名称、IP、端口、用户、变量 4. 支持导入/导出 INI/YAML 格式清单 5. 可测试主机连通性(mock/真实) ### 3. 任务执行 1. 进入「执行」页面 2. **步骤 1**:选择要执行的 Playbook 3. **步骤 2**:选择目标主机(支持多选、按组选择) 4. **步骤 3**:配置额外变量(YAML 格式) 5. 点击「执行」开始任务 6. 实时查看执行日志和结果统计 ### 4. 仪表盘 - 查看系统概览:Playbook 数量、主机数量、执行统计 - 最近执行记录快速访问 - 模式切换和系统状态指示 - 快捷操作入口 ## 🔌 API 文档 后端提供以下 REST API: ### 配置 API - `GET /api/config` - 获取配置 - `PUT /api/config` - 更新配置 - `GET /api/health` - 健康检查 ### Playbook API - `GET /api/playbooks` - 获取 Playbook 列表 - `GET /api/playbooks/` - 获取 Playbook 内容 - `PUT /api/playbooks/` - 保存 Playbook - `DELETE /api/playbooks/` - 删除 Playbook ### 执行 API - `POST /api/execute` - 执行 Playbook - `GET /api/execute//status` - 获取任务状态 - `GET /api/execute//log` - 获取任务日志(SSE) - `POST /api/execute//stop` - 停止任务 - `GET /api/execute/history` - 获取执行历史 ### 主机 API - `GET /api/hosts` - 获取主机列表 - `PUT /api/hosts` - 保存主机配置 ## 🛡️ 安全注意事项 1. **后端服务仅限内网访问**:默认监听 0.0.0.0,请确保防火墙配置正确 2. **敏感信息管理**:不要将包含密码、密钥的 Playbook 提交到版本控制 3. **权限控制**:当前版本无用户认证,请勿直接暴露在公网 4. **Ansible 权限**:确保运行后端的用户有执行 Ansible 的权限 ## 📝 常见问题 ### Q: Mock 模式和 Backend 模式有什么区别? A: Mock 模式所有数据保存在浏览器 localStorage,执行返回模拟日志;Backend 模式连接 Python 服务,可以真实执行 Ansible Playbook。 ### Q: 如何切换到 Backend 模式? A: 修改 `config.json` 中的 `"mode"` 为 `"backend"`,或在前端仪表盘点击模式切换按钮。 ### Q: 后端服务启动失败怎么办? A: 1. 检查 Python 版本是否 >= 3.8 2. 检查依赖是否安装:`pip install -r server/requirements.txt` 3. 检查端口是否被占用 4. 查看详细错误日志 ### Q: 如何自定义 Playbook 模板? A: 在 `js/playbook-editor.js` 中的 `templates` 对象添加自定义模板。 ### Q: 执行历史保存在哪里? A: Mock 模式保存在 localStorage;Backend 模式保存在内存中(重启后丢失),可扩展为数据库存储。 ## 🔄 开发计划 - [ ] 用户认证与权限管理 - [ ] 执行历史持久化(SQLite/MySQL) - [ ] Playbook 版本控制(Git 集成) - [ ] 定时任务调度 - [ ] 通知告警(邮件、Webhook) - [ ] 更多 Ansible 模块支持 - [ ] 多语言支持 ## 📄 许可证 MIT License ## 🙏 致谢 - [Monaco Editor](https://microsoft.github.io/monaco-editor/) - VS Code 同款编辑器 - [TailwindCSS](https://tailwindcss.com/) - 实用优先的 CSS 框架 - [Flask](https://flask.palletsprojects.com/) - 轻量级 Python Web 框架 - [Ansible Runner](https://ansible.readthedocs.io/projects/runner/) - Ansible 执行封装 --- **Happy Automating! 🚀**