Architecture globale¶
Cette page présente la conception architecturale globale d'OpsAnt.
Schéma d'architecture¶
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
Conception centrale¶
Séparation front-end / back-end¶
- Front-end : Vue 3 + Ant Design Vue, SPA, artefacts compilés dans
static/opsant/ - Back-end : Django, fournit une REST API avec le préfixe
api/opsant/v1/, enveloppe de réponse{code, message, data}
Trois moteurs d'exécution¶
Routage vers différents moteurs d'exécution selon le mode de gestion des hôtes :
| Mode de gestion | Moteur d'exécution | Description |
|---|---|---|
| SSH | Ansible | Sans Agent, basé sur SSH |
| Agent | SaltStack | Modèle push salt-minion |
| OpsMini | OpsMini Server | Implémenté en Go, plan de données gRPC |
Commutateur bi-mode¶
La plateforme prend en charge la commutation via le commutateur OPSANT_ENABLED :
true: forme de produit autonome (avec front-end et nouvelle API)false: anciennes routes pures OpsAny Proxy
Les deux routages sont isolés et n'interfèrent pas l'un avec l'autre.
OpsMini Agent sans SaltStack¶
OpsMini, en tant que projet Agent Go indépendant, adopte un modèle pull où l'Agent (panneau) expose une REST API, activement récupérée par le Proxy, dans un esprit similaire à Prometheus, plutôt que le modèle push de salt-minion.
Explications plus détaillées¶
- Pile technologique — choix technologiques de chaque composant
- Structure des répertoires — organisation des répertoires de code