总体架构¶
本页介绍 OpsAnt 的整体架构设计。
架构图¶
graph TB
subgraph 前端
UI[Vue 3 + Ant Design Vue<br/>SPA]
end
subgraph 后端
API[Django API<br/>api/opsant/v1/]
CELERY[Celery Worker]
BEAT[Celery Beat<br/>定时任务]
end
subgraph 执行引擎
ANS[Ansible<br/>SSH 主机]
SALT[SaltStack<br/>Agent 主机]
MINI[OpsMini Server<br/>Go / gRPC]
end
subgraph 数据
DB[(MySQL)]
REDIS[(Redis)]
end
subgraph 监控
PROM[Prometheus]
AM[Alertmanager]
CONSUL[Consul]
end
UI --> API
API --> DB
API --> REDIS
CELERY --> ANS
CELERY --> SALT
CELERY --> MINI
BEAT --> CELERY
API --> PROM
API --> AM
API --> CONSUL
MINI --> REDIS
MINI --> CONSUL
核心设计¶
前后端分离¶
- 前端:Vue 3 + Ant Design Vue,SPA,产物构建到
static/opsant/ - 后端:Django,提供
api/opsant/v1/前缀的 REST API,响应信封{code, message, data}
三执行引擎¶
按主机纳管方式路由到不同执行引擎:
| 纳管方式 | 执行引擎 | 说明 |
|---|---|---|
| SSH | Ansible | 无 Agent,基于 SSH |
| Agent | SaltStack | salt-minion push 模型 |
| OpsMini | OpsMini Server | Go 实现,gRPC 数据面 |
双模式开关¶
平台支持通过 OPSANT_ENABLED 开关切换:
true:独立产品形态(含前端与新 API)false:纯 OpsAny Proxy 旧路由
两者路由隔离,互不影响。
去 SaltStack 化的 OpsMini Agent¶
OpsMini 作为独立的 Go Agent 项目,采用 Agent(面板)暴露 REST API、由 Proxy 主动拉取的 pull 模型,思路类似 Prometheus,而非 salt-minion 的 push 模型。