Skip to content

Ansible v1#14

Merged
zhang1024fan merged 7 commits intoopsre:mainfrom
zhou2004:ansible_v1
Feb 3, 2026
Merged

Ansible v1#14
zhang1024fan merged 7 commits intoopsre:mainfrom
zhou2004:ansible_v1

Conversation

@zhou2004
Copy link
Contributor

此分支针对task模块中的ansible任务进行修改,在原来的基础上增加了更多了功能,包括ansible的更多参数支持,ansible定时任务和ansible历史任务记录等,基本功能已完成测试,能够满足一般复杂的需求,后续会针对这块进行性能优化调整和Bug修复。

注意:此模块

🚀 Feat: Ansible 任务模块功能增强与重构

本次提交对 Ansible 任务模块进行了深度的功能迭代,主要集中在任务历史记录管理、周期性任务支持、配置中心集成以及 API 文档的规范化。

✨ 核心功能更新

1. 任务执行历史记录体系 (History & Logging)

  • 历史记录持久化
    • 新增 TaskAnsibleHistory 表记录每次执行的任务状态、耗时和触发者。
    • 新增 TaskAnsibleworkHistory 表记录子任务(Playbook 级别)的详细执行结果。
  • 日志隔离与归档
    • 实现了基于 RunID(时间戳)的物理日志目录隔离(logs/ansible/{taskID}/{workID}/{timestamp}/),防止多次执行日志互相覆盖。
    • 提供了 日志轮转(Log Rotation) 机制,支持通过 MaxHistoryKeep 字段配置保留最近 N 次历史记录,自动清理旧的数据库记录及磁盘日志文件。
  • 日志查询接口
    • 支持通过多种维度(HistoryID, WorkID, TaskID)查询归档日志内容。
    • 实现了 SSE (Server-Sent Events) 接口的兼容性升级,支持实时日志与历史日志的无缝切换。

2. 配置中心深度集成

  • 动态配置挂载
    • 任务现支持关联配置中心 (ConfigCenter) 的各项配置,包括:
      • Inventory (主机清单)
      • GlobalVars (全局变量)
      • ExtraVars (额外变量)
      • CliArgs (命令行参数)
  • 运行时注入:在任务执行只需勾选 use_config=1,系统将在运行时动态拉取最新配置覆盖本地文件,实现了任务定义与配置数据的解耦。

3. 任务调度与周期性支持

  • 定时任务字段
    • 模型新增 CronExpr (Cron 表达式) 和 IsRecurring (是否周期任务) 字段。
    • 创建/更新接口已适配定时参数的接收与处理。
  • 视图分类:新增 ViewID 字段,支持将任务归类到不同的视图中进行管理。

4. API 接口与文档优化

  • 文档模块化拆分:将庞大的 docs.go 拆分为 task, cmdb 等子模块,便于维护。
  • 接口参数补全
    • CreateTask 和 UpdateTask 接口现已完整支持所有新增参数(包括配置ID、Cron表达式、Playbook路径等)。
      -Swagger 文档已同步更新,支持完整参数的在线调试。
  • 新增管理接口
    • DELETE /api/v1/task/ansible/{id}/history/{history_id}: 删除指定历史记录及物理文件。
    • GET /api/v1/task/ansible/history/...: 丰富的历史记录查询接口族。

🛠 数据库模型变更 (TaskAnsible)

字段 类型 说明 变更类型
MaxHistoryKeep int 最大保留历史记录数 (默认3) ✨ 新增
CronExpr string 定时任务表达式 ✨ 新增
IsRecurring int 是否周期性任务 (0/1) ✨ 新增
ViewID uint 关联视图 ID ✨ 新增
InventoryConfigID uint 关联 Inventory 配置 ID ✨ 新增
UseConfig int 配置中心开关 ✨ 新增
... ... (以及对应的外键关联字段) ✨ 新增

🧪 测试验证

  •  创建任务:验证包含 Cron 表达式和配置中心 ID 的任务创建成功。
  •  执行任务:验证任务执行后生成 History 记录,且日志文件路径正确隔离。
  •  日志清理:连续执行超过 MaxHistoryKeep 次数,验证旧记录和磁盘文件被物理删除。
  •  接口文档:验证 Swagger UI 中 Task 模块参数显示完整且可调用。

@zhang1024fan zhang1024fan merged commit 4e1cec5 into opsre:main Feb 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants