コンテンツにスキップ

全体アーキテクチャ

本ページでは 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 モデルではありません。

より詳細な説明