Aller au contenu

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