全体アーキテクチャ¶
本ページでは 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}
3つの実行エンジン¶
ホスト管理方式に応じて異なる実行エンジンにルーティング:
| 管理方式 | 実行エンジン | 説明 |
|---|---|---|
| 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 モデルではありません。