總體架構¶
本頁介紹 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 模型。