VMware AIops について
VMware AIopsは、VMware vCenter/ESXiの仮想マシンのライフサイクルとデプロイを管理するCLIおよびMCPサーバーです。運用操作に加え、読み取り専用の調査レポートや、統制された計画実行とロールバックを備えています。
主な機能
- 01仮想マシンのライフサイクル管理
- 02OVA、テンプレート、クローンのデプロイ
- 03ゲストOSのコマンドとファイル操作
- 04ロールバック対応の複数ステップ計画
- 05クラスターとネットワークの管理
- 06関連情報をまとめる読み取り専用レポート
活用シーン
- 01検証環境の仮想マシンをデプロイして設定
- 02テスト用仮想マシンの一括クローン
- 03仮想マシンを別ホストへ移行
- 04対象資産のアラームや性能を調査
MCP 対応
デプロイ、ライフサイクル管理、計画実行、レポートなどのVMware管理・調査ツールをMCPクライアントに提供します。構造化されたパラメーターと出力により、自動化ワークフローで利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
VMware AIops
著者:Wei Zhou、VMware by Broadcom — [email protected] これはVMwareのエンジニアが主導するコミュニティプロジェクトであり、VMwareの公式製品ではありません。 VMwareの公式開発者ツールについては、developer.broadcom.comをご覧ください。
English | 中文
AIを活用したVMware vCenter/ESXiのVMライフサイクルおよびデプロイツール — 61個のツール。
関連スキルで、その他すべてに対応します。
スキル 対象範囲 インストール vmware-monitor 読み取り専用:インベントリ、健全性、アラーム、イベント、メトリクス uv tool install vmware-monitorvmware-storage データストア、iSCSI、vSANの管理 uv tool install vmware-storagevmware-vks Tanzu Namespaces、TKCクラスタのライフサイクル uv tool install vmware-vks読み取り専用の監視だけが必要ですか? VMware-Monitorをご利用ください — コードベースに破壊的なコードは一切ありません。
2.0へのアップグレード
2.0では38個のMCPツールの名前が変更され、すべての名前が動詞で始まるようになりました(例:cluster_add_host → add_cluster_host、cluster_configure → configure_cluster、cluster_create → create_cluster)。旧名から新名への対応表は、
RELEASE_NOTES.mdに記載されています。
それ以外に変更はありません。ツール、パラメーター、安全ゲート、CLIコマンドは従来どおりです。エージェントのプロンプト、スクリプト、または ~/.vmware/rules.yaml でツール名を指定している場合は、更新してください(ただし、保存済みプランファイル内の action の語句は変更しないでください。cluster_add_host、storage_rescan などはプランのアクションであり、ツール名ではないため、綴りをそのまま維持します)。旧名で記述された拒否ルールは、vmware-policy ≥ 1.18で引き続き機能します(vmware-audit policy を実行すると、名前の変更により適用範囲が広がったルールが表示されます)。また、vmware-pilot ≥ 1.13では、保存済みワークフロー内の旧名が変換されます。
2.0より古いインストール環境で同じ rules.yaml を共有する場合は、vmware-policy ≥ 1.18.2もインストールしてください。このバージョンでは各ルールが旧名と新名の両方に照合されるため、1つのファイルを両方の環境で使用できます。
⚡ すばやく調査できるレポート(読み取り専用)
トリアージ → 調査 → 対応まで、すべてをひとつの会話で行えます。独自の観点でまとめられた5種類の読み取り専用レポートが、サーバー側で集約・相関分析を行い、要点を絞った結果を返します(未加工のインベントリは返しません)。そのため、何かを変更する前に、どこを調べるべきかを判断できます。各レポートは、--html を指定すると単独で完結するオフライン HTML スナップショットを生成します(外部アセットなし。詳細はネイティブの <details> で折りたたまれ、JavaScript は不要です)。いずれも AIops 独自の vCenter 接続を使い、vmware-monitor ライブラリに処理を委譲します。
| 質問 | コマンド | 相関分析する内容 |
|---|---|---|
| 「今、対応が必要なのは?」(すべての vCenter が対象) | vmware-aiops attention | すべての vCenter をひとつの全体ランキング付き問題リストに統合します。到達不能なターゲットにも適切に対応します |
| 「深刻な障害は発生していますか?」(すべてのクラスターが対象) | vmware-aiops summary | 各クラスターのホスト + VM の電源状態 + ライブ CPU/メモリ + アラーム → 上位 N 件の問題をランキング表示し、クラスターごとのステータスも示します |
| 「この VM の周辺では何が起きていますか?」 | vmware-aiops investigate vm <name> | VM の状態 + ホスト + クラスター + バッキングデータストア + スナップショット + アラーム + パフォーマンス + 統合されたイベントタイムライン |
| 「このホストの周辺では何が起きていますか?」 | vmware-aiops investigate host <name> | ホストの状態 + クラスター + 実行中の VM + マウント済みデータストア + アラーム + パフォーマンス + 相関分析されたタイムライン |
| 「このデータストアの周辺では何が起きていますか?」 | vmware-aiops investigate datastore <name> | 容量/空き容量 + マウントしているホスト + このデータストアをバッキングとしている VM + アラーム + 相関分析されたタイムライン |
vmware-aiops attention # what needs attention now, all vCenters
vmware-aiops investigate vm web-01 --hours 72 # everything around a VM, then act on it
vmware-aiops investigate vm web-01 --html # → offline snapshot in ~/vmware-health/
MCP 経由では、これらは get_cluster_health_summary、get_cross_vcenter_attention、investigate_vm、investigate_host、investigate_datastore ツールとして利用できます。(vmware-monitor のインストールが必要です。)
クイックインストール(推奨)
Claude Code、Cursor、Codex、Gemini CLI、Trae、および30以上の AI エージェントで利用できます。
# Via Skills.sh
npx skills add vmware-skills/VMware-AIops
# Via ClawHub
clawhub install @zw008/vmware-aiops
PyPI からインストール(GitHub へのアクセスは不要)
# Install via uv (recommended)
uv tool install vmware-aiops
# Or via pip
pip install vmware-aiops
# China mainland mirror (faster)
pip install vmware-aiops -i https://pypi.tuna.tsinghua.edu.cn/simple
オフライン/エアギャップ環境へのインストール(ソースから)
このプロジェクトでは最新の PEP 517 ビルドシステム(hatchling)を使用しているため、設計上 setup.py はありません。これは想定どおりであり、ファイルの欠落ではありません。ソースをクローンした後、ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build というエラーが発生した場合は、お使いの pip が 21.3 より古く、setuptools 以外のバックエンドを使った編集可能な(-e)インストールに対応していません。編集可能モードは開発者向けの利便機能であり、ツールの実行には不要です。次のいずれかを行ってください。
# From the source tree — a normal (non-editable) install builds a wheel:
pip install . # NOT pip install -e .
# ...or upgrade pip first, and editable works too:
pip install --upgrade pip && pip install -e .
完全なエアギャップ環境のホストの場合は、ネットワークに接続されたマシンで wheel をビルドしてからコピーしてください。対象ホストではネットワークが不要になります。
# On a connected machine, collect this package + its dependencies as wheels:
pip wheel . -w dist # → dist/*.whl (or: uv build, for just this package)
# Copy dist/ to the air-gapped host, then install offline:
pip install --no-index --find-links dist vmware-aiops
他の VMware MCP サーバーとの違い
多くのオープンソース VMware MCP サーバー(例:bright8192/esxi-mcp-server、
giuliolibrando/vmware-vsphere-mcp-server)は、単一の vCenter に対応する VM ラッパーです。
VM の一覧表示、電源操作、スナップショット、基本的な監視、confirm=True フラグを備えています。
ネットワーク、ストレージ、Kubernetes、運用分析、ロードバランシング、コンプライアンスには明示的に対応していません。また、「ログが文書化されている」ことは監査証跡があることを意味しません。
これは、環境全体をカバーし、すべてのツールをガバナンスされたハーネス経由で実行する11 パッケージのファミリーの一つです。
| 他の VMware MCP サーバー | このファミリー | |
|---|---|---|
| VM のライフサイクル管理+監視 | ✅ | ✅ |
| NSX ネットワーク(セグメント/ゲートウェイ/NAT/ルーティング/IPAM) | ❌ | ✅ vmware-nsx |
| NSX セキュリティ(DFW/グループ/IDS-IPS/traceflow) | ❌ | ✅ vmware-nsx-security |
| ストレージ(データストア/iSCSI/vSAN) | ❌ | ✅ vmware-storage |
| Tanzu Kubernetes(Supervisor/Namespace/TKC) | ❌ | ✅ vmware-vks |
| Aria Operations(メトリクス/アラート/キャパシティ) | ❌ | ✅ vmware-aria |
| AVI/NSX ALB ロードバランシング+AKO | ❌ | ✅ vmware-avi |
| コンプライアンスベースライン+ドリフト(CIS/SCG/等保/PCI) | ❌ | ✅ vmware-harden |
| ガバナンスされたハーネス(統合監査、ポリシーエンジン、トークン予算+暴走防止、段階的なリスクレベル、取り消しトークン、プロンプトインジェクションのサニタイズ) | ❌ | ✅ すべてのツールで vmware-policy |
単一の vCenter で VM の電源を入れ直すだけなら、単一ファイルのサーバーで十分です。実運用の(規制対象で、NSX でセグメント化され、複数ドメインにまたがる)VMware 環境を運用し、監査人の承認を得られる AI オペレーターが必要であれば、このファミリーが適しています。詳しくはdocs/compliance-ready.mdをご覧ください。
機能の概要
このスキルでできること
| カテゴリ | ツール | 数 |
|---|---|---|
| VM のライフサイクル管理 | 電源オン/オフ、TTL による自動削除、クリーンスレート | 6 |
| デプロイ | OVA、テンプレート、リンククローン、バッチクローン/デプロイ | 8 |
| ゲスト操作 | コマンド実行、ファイルのアップロード/ダウンロード、プロビジョニング | 5 |
| 計画/適用 | ロールバック対応の複数ステップ計画 | 4 |
| クラスター | 作成、削除、HA/DRS 設定、ホストの追加/削除 | 6 |
| データストア | ファイルの参照、イメージのスキャン | 2 |
| ネットワーク | dvSwitch ポートグループの一覧表示/作成、ホスト VMkernel の一覧表示/追加/削除、DF ビットを使った MTU パスの ping | 6 |
| アクセス | 使用中のアカウントと、各ツールの権限の有無(get_access_info、CLI の access-info) | 1 |
CLI と MCP:どちらを使うべきか
| シナリオ | 推奨 | 理由 |
|---|---|---|
| ローカル/小規模モデル(Ollama、Qwen <32B) | CLI | MCP の約 10K トークンに対し、コンテキストは約 2K トークンです。小規模モデルは多数のツールスキーマを扱うのが苦手です |
| トークン重視のワークフロー | CLI | SKILL.md + Bash ツールでオーバーヘッドを最小限に抑えられます |
| クラウドモデル(Claude、GPT-4o) | どちらでも | どちらも使えます。MCP では構造化された JSON の入出力が可能です |
| 自動化パイプライン/エージェントの連携 | MCP | 型安全なパラメーター、構造化された出力、シェルの解析が不要です |
| 監視/ストレージ/K8s | 関連スキル | vmware-monitor、vmware-storage、vmware-vksをご覧ください |
目安:コスト効率と小規模モデルを重視する場合は CLI を使用してください。大規模モデルを使った構造化自動化には MCP を使用してください。
アーキテクチャ
User (Natural Language)
↓
AI CLI Tool (Claude Code / Gemini / Codex / Aider / Continue / Trae / Kimi)
↓ reads SKILL.md / AGENTS.md / rules
↓
vmware-aiops CLI
↓ pyVmomi (vSphere SOAP API)
↓
vCenter Server ──→ ESXi Cluster ──→ VM
or
ESXi Standalone Host ──→ VM
バージョンの互換性
| vSphere / VCF のバージョン | サポート | 備考 |
|---|---|---|
| VCF 9.1 / vSphere 9.1 | ✅ 完全対応 | 2026-05-12 にリリースされました。pyVmomi <10.0 は SOAP 経由で解決・接続します。新しい REST 専用機能(PATCH /deployment/size、IPv6 のみの GOSC)はまだラップされていません。詳細は VCF Python SDK をご覧ください。 |
| VCF 9.0 / vSphere 9.0 | ✅ 完全対応 | pyVmomi 8.0.3 以降は vSphere 9 SOAP API に接続します。VCF 9 以降では、pyVmomi は統合 VCF Python SDK にもバンドルされています。 |
| 8.0 / 8.0U1-U3 | ✅ 完全対応 | CreateSnapshot_Task は非推奨です。代わりに CreateSnapshotEx_Task を使用してください |
| 7.0 / 7.0U1-U3 | ✅ 完全対応 | すべての API に対応 |
| 6.7 | ✅ 互換性あり | 後方互換性があり、テスト済み |
| 6.5 | ✅ 互換性あり | 後方互換性があり、テスト済み |
pyVmomi は SOAP ハンドシェイク中に API バージョンを自動ネゴシエーションするため、手動設定は不要です。同じコードベースで 7.0 / 8.0 / 9.0 / 9.1 の環境をシームレスに管理できます。
Broadcom の公式リファレンス
- SDK:https://developer.broadcom.com/sdks — VCF Python SDK(VCF 9 以降で推奨。pyVmomi と vSAN SDK をバンドル)、vSphere Automation SDK for Python(REST API)
- REST API:https://developer.broadcom.com/xapis — vSphere Automation API、VCF API、SDDC Manager API
- CLI ツール:https://developer.broadcom.com/tools — PowerCLI 9.1、ESXCLI、OVF Tool
一般的なワークフロー
ラボ環境をデプロイする
- OVA イメージをデータストアで参照 →
vmware-aiops datastore browse <ds> --pattern "*.ova" - OVA から VM をデプロイ →
vmware-aiops deploy ova ./image.ova --name lab-vm --datastore ds1 - VM 内にソフトウェアをインストール →
vmware-aiops vm guest-exec lab-vm --cmd /bin/bash --args "-c 'apt-get install -y nginx'" --user root - ベースラインスナップショットを作成 →
vmware-aiops vm snapshot-create lab-vm --name baseline - 自動クリーンアップ用に TTL を設定 →
vmware-aiops vm set-ttl lab-vm --minutes 480
テスト用に一括クローンする
- プランを作成:複数のクローンおよび再構成ステップを含む
create_vm_plan - ユーザーとプランを確認(影響を受ける VM と、取り消せない操作に関する警告を表示)
- 適用:
apply_vm_planは順次実行し、失敗すると停止します - 失敗した場合:
rollback_vm_planで実行済みのステップを元に戻します - 自動クリーンアップ用にすべてのクローンの TTL を設定
VM を別のホストに移行する
vmware-monitorで VM 情報を確認 → 電源状態と現在のホストを検証- 移行:
vmware-aiops vm migrate my-vm --to-host esxi-02 - 移行が完了したことを確認
VM のライフサイクル
| 操作 | コマンド | 確認 | vCenter | ESXi |
|---|---|---|---|---|
| 電源オン | vm power-on <name> | — | ✅ | ✅ |
| 正常なシャットダウン | vm power-off <name> | 2 回 | ✅ | ✅ |
| 強制電源オフ | vm power-off <name> --force | 2 回 | ✅ | ✅ |
| リセット | create_vm_plan 経由のプランアクション reset(MCP。CLI コマンドなし) | — | ✅ | ✅ |
| サスペンド | create_vm_plan 経由のプランアクション suspend(MCP。CLI コマンドなし) | — | ✅ | ✅ |
| VM の作成 | vm create <name> --cpu --memory --disk | — | ✅ | ✅ |
| VM の削除 | vm delete <name> | 2 回 | ✅ | ✅ |
| 再構成 | vm reconfigure <name> --cpu --memory | 2 回 | ✅ | ✅ |
| スナップショットの作成 | vm snapshot-create <name> --name <snap> | — | ✅ | ✅ |
| スナップショットの一覧表示 | vm snapshot-list <name> | — | ✅ | ✅ |
| スナップショットへの復元 | vm snapshot-revert <name> --name <snap> | 2 回 | ✅ | ✅ |
| スナップショットの削除 | vm snapshot-delete <name> --name <snap> [--no-wait] | 2 回 | ✅ | ✅ |
| タスクのステータス | vm task-status <task-id> | — | ✅ | ✅ |
| VM のクローン | vm clone <name> --new-name <new> | 2 回 | ✅ | ✅ |
| vMotion | vm migrate <name> --to-host <host> | 2 回 | ✅ | ❌ |
| TTL の設定 | vm set-ttl <name> --minutes <n> | 2 回 | ✅ | ✅ |
| TTL のキャンセル | vm cancel-ttl <name> | — | ✅ | ✅ |
| TTL の一覧表示 | vm list-ttl | — | ✅ | ✅ |
| 初期状態への復元 | vm clean-slate <name> [--snapshot baseline] | 2 回 | ✅ | ✅ |
| ゲストでのコマンド実行 | vm guest-exec <name> --cmd /bin/bash --args "..." --user <account> | 2 回 | ✅ | ✅ |
| ゲストでのコマンド実行(出力付き) | MCP 専用:run_vm_guest_command_with_output(username が必須)。CLI コマンドなし | — | ✅ | ✅ |
| ゲストへのアップロード | vm guest-upload <name> --local f.sh --guest /tmp/f.sh --user <account> | 2 回 | ✅ | ✅ |
| ゲストからのダウンロード | vm guest-download <name> --guest /var/log/syslog --local ./syslog --user <account> | — | ✅ | ✅ |
ゲスト操作には、ゲスト OS 内で VMware Tools が実行されている必要があります。また、ゲストアカウント名は必ず明示します。CLI では
--user、MCP ではusernameを指定します。デフォルト値はないため、root を選択しない限り、root として実行される呼び出しはありません。run_vm_guest_command_with_output(MCP 専用。CLI に同等の機能はありません)は、Linux/Windows のシェルを自動検出し、標準出力/標準エラーを取得します。
計画 → 適用(複数ステップの操作)
2 つ以上のステップ、または 2 台以上の VM を含む複雑な操作では、個別に実行するのではなく、計画/適用のワークフローを使用します。
| ステップ | 実行内容 |
|---|---|
| 1. 計画の作成 | AI が create_vm_plan を呼び出します。アクションを検証し、vSphere 上の対象を確認して、ロールバック情報付きの計画を生成します |
| 2. レビュー | AI がステップ、影響を受ける VM、取り消し不可能な操作の警告を含む計画をユーザーに提示します |
| 3. 適用 | apply_vm_plan はまずプレビューを表示します。confirm=True を指定すると、順番に実行し、失敗時に停止します。各ゲート付きステップは、それぞれのツールが独自に確認します。iSCSI/再スキャンのステップは拒否されます(vmware-storage を使用してください) |
| 4. ロールバック(失敗した場合) | ロールバックするかどうかをユーザーに確認し、その後 rollback_vm_plan が実行済みのステップを取り消します(取り消し不可能なステップはスキップされます)。破壊的なロールバックの各ステップは事前に確認され、確認が拒否された場合はロールバックを停止します |
計画は ~/.vmware-aiops/plans/ に保存され、成功時に自動削除され、24 時間後に自動クリーンアップされます。
VM のデプロイとプロビジョニング
| 操作 | コマンド | 所要時間 | vCenter | ESXi |
|---|---|---|---|---|
| OVA からデプロイ | deploy ova <path> --name <vm> | 数分 | ✅ | ✅ |
| テンプレートからデプロイ | deploy template <tmpl> --name <vm> | 数分 | ✅ | ✅ |
| リンククローン | deploy linked-clone --source <vm> --snapshot <snap> --name <new> | 数秒 | ✅ | ✅ |
| ISO の接続 | deploy iso <vm> --iso "[ds] path/to.iso" | 即時 | ✅ | ✅ |
| テンプレートへの変換 | deploy mark-template <vm> | 即時 | ✅ | ✅ |
| 一括クローン | deploy batch-clone --source <vm> --count <n> | 数分 | ✅ | ✅ |
| 一括デプロイ(YAML) | deploy batch spec.yaml | 自動 | ✅ | ✅ |
クラスター管理
| 操作 | コマンド | 確認 | vCenter | ESXi |
|---|---|---|---|---|
| クラスター情報 | cluster info <name> | — | ✅ | ❌ |
| クラスターの作成 | cluster create <name> [--ha] [--drs] | — | ✅ | ❌ |
| クラスターの削除 | cluster delete <name> | 2回 | ✅ | ❌ |
| ホストの追加 | cluster add-host <cluster> --host <host> | 2回 | ✅ | ❌ |
| ホストの削除 | cluster remove-host <cluster> --host <host> | 2回 | ✅ | ❌ |
| HA/DRS の設定 | cluster configure <name> [--ha/--no-ha] [--drs/--no-drs] | 2回 | ✅ | ❌ |
remove-hostを実行する前に、ホストをメンテナンスモードにする必要があります。ホストはクラスターからデータセンターのホストフォルダーに移動され、スタンドアロンホストになります。
アラーム管理
| 操作 | コマンド | 確認 | vCenter | ESXi |
|---|---|---|---|---|
| トリガーされたアラームの一覧表示 | alarm list [--target <t>] | — | ✅ | ❌ |
| アラームの確認 | alarm acknowledge <entity> <alarm> | — | ✅ | ❌ |
| アラームのクリア(リセット) | alarm reset <entity> <alarm> | 2回 | ✅ | ❌ |
影響範囲:vSphere にはアラームを個別にクリアする API がありません。
alarm resetはAlarmManager.ClearTriggeredAlarmsを使用します。この API は、指定したアラームのエンティティタイプ(ホスト/VM/すべて)と現在のステータス(赤/黄)に一致する、トリガー済みのアラームをすべてクリアします。指定したアラームだけではありません。指定したアラームは最初に検索されるため(入力ミスはすぐにエラーになります)、出力のscopeフィールドには、実際にクリアされた範囲が正確に表示されます。クリアされたアラームは、根本的な条件が継続している場合、自動的に再度トリガーされます。
データストアブラウザー
| 機能 | vCenter | ESXi | 詳細 |
|---|---|---|---|
| ファイルの参照 | ✅ | ✅ | 任意のデータストアパスにあるファイル/フォルダーを一覧表示します |
| イメージのスキャン | ✅ | ✅ | すべてのデータストアから ISO、OVA、OVF、VMDK を検出します |
スケジュールスキャンと通知
| 機能 | 詳細 |
|---|---|
| デーモン | APScheduler ベースで、間隔を設定できます(デフォルトは 15 分) |
| 複数ターゲットのスキャン | 設定済みのすべての vCenter/ESXi ターゲットを順番にスキャンします |
| スキャン対象 | 各サイクルで、トリガー済みアラーム、直近の lookback_hours 時間に発生した vCenter イベント、および ESXi ホストログ hostd、vmkernel、vpxa の新しい行をスキャンします |
| ホストログ | 増分で読み取られ、各行はデーモンの実行ごとに 1 回だけ報告されます(デーモンを再起動すると、各ログの末尾 500 行を 1 回再読み込みします)。ログがローテーションされた場合、またはサイクル間に 500 行を超える新しい行が追加された場合は、スキャンされなかった行を示す info 行が追加されます。ホストログの読み取りには Global.Diagnostics 権限が必要ですが、vCenter の Read-Only ロールには含まれていません。読み取りできないログは、その理由を記載した info 行になります。「問題なし」として黙って処理されることはありません |
| ログ分析 | error、fail、critical、panic、lost access、cannot、timeout、refused、corrupt に一致するホストログ行を検出します。critical/panic/corrupt を含む行は critical、それ以外は warning です |
| 構造化ログ | ~/.vmware-aiops/scan.log に JSONL 形式で出力します。すべての問題を記録し、info 行も含めます |
| Webhook | Slack、Discord、または任意の HTTP エンドポイントに対応します。すべての重大な問題と、アラーム/イベントの警告を送信します。ホストログの警告はスキャンログにのみ記録し、info 行は送信しません |
| サイクルの概要 | 各サイクルにつき 1 行をデーモンのログ出力に記録します。検出内容(および webhook に送信された件数)、読み取りできなかったホストログ、スキャンされなかった行があるログ、失敗した処理を記載します。いずれかの処理が失敗した場合、またはターゲットに接続できなかった場合は、Scan INCOMPLETE と表示し、「問題なし」とは表示しません |
| デーモン管理 | daemon start/stop/status、PID ファイル、正常なシャットダウン |
安全機能
| 機能 | 詳細 |
|---|---|
| ドライランモード(CLI のみ) | --dry-run は、deploy iso、deploy mark-template、vm cancel-ttl、vm guest-download を除くすべての CLI 書き込み操作で、実行せずに正確な API 呼び出しを表示します |
| 計画 → 確認 → 実行 → 記録 | CLI ワークフロー:現在の状態を表示し、変更を確認してから実行し、監査ログに記録します |
| 二重確認(CLI のみ) | 破壊的な操作とデプロイの CLI コマンド(vm の電源オフ、削除、再構成、スナップショットの復元・削除、クローン、移行、TTL の設定、完全消去、ゲストでのコマンド実行、ゲストへのアップロード;deploy の OVA、テンプレート、リンククローン、バッチ、バッチクローン、テンプレートとしてマーク;cluster の削除、ホストの追加・削除、構成、DRS ルールの設定・作成・削除;alarm reset)では、連続する 2 回のプロンプトが必要で、バイパス用フラグはありません |
| 確認が必要なのは破壊的な MCP ツールのみ | MCP 経由でエージェントに表示される 43 個の書き込みツールのうち 23 個(破壊的と注記されたすべてのツールに加え、migrate_vm とネットワーク/DRS の作成ツール)は、最初にプレビューを表示し、confirm=True が必要です。残りの 20 個(作成、クローン、デプロイ、電源オン、再構成、スナップショット作成、ホスト追加、テンプレートおよび ISO の操作、ゲストのダウンロード、プランの作成、アラームの確認)は、最初の呼び出しで実行されます。承認段階はなく、読み取り専用に切り替える機能もありません。書き込みが実行されるかどうかを決めるのは vCenter アカウントの権限であり、その記録を残すのは監査ログです。保護の仕組みを参照してください |
| 拒否の記録 | 拒否された CLI 確認は監査ログに記録されます |
| 監査ログ | すべての操作は、変更前後の状態とともに ~/.vmware-aiops/audit.log(JSONL)に記録されます |
| 入力の検証 | VM 名、CPU(1~128)、メモリ(128~1048576 MB)、ディスク(1~65536 GB)を検証します |
| パスワード保護 | 権限チェックを伴う .env ファイルの読み込みに対応し、パスワードがシェル履歴に残ることはありません |
| 自己署名証明書の SSL 対応 | verify_ssl: false は、隔離されたラボで自己署名証明書を使用する ESXi に限って使用してください。本番環境では CA 署名付き証明書を使用してください |
| プロンプトインジェクション対策 | vSphere のイベントメッセージとホストログは、出力前に切り詰め、制御文字を除去し、境界マーカーで囲みます |
| Webhook のデータ範囲 | デフォルトでは無効です。設定した場合、デーモンは指定した URL にのみ、すべての重大な問題(アラーム、イベント、「critical」「panic」「corrupt」に一致する ESXi ログ行、接続できなかった対象)と、すべてのアラーム/イベントの警告を送信します。ホストログの警告はスキャンログに残り、info の行は送信されません。各問題にはエンティティ名とメッセージが含まれます。メッセージはサニタイズ済みのアラーム、イベント、ESXi ログのテキスト、または接続エラーであり、ホスト名、IP アドレス、ユーザー名が含まれる場合があります。このスキルの設定や .env の認証情報は送信されません |
| タスクの待機 | すべての非同期操作は完了まで待機し、結果を報告します |
| 状態の検証 | 操作前に、VM の存在や電源状態が適切かを確認します |
vCenter と ESXi の比較
| 機能 | vCenter | ESXi スタンドアロン |
|---|---|---|
| vMotion 移行 | ✅ | ❌ |
| ホスト間クローン | ✅ | ❌ |
| クラスター管理 | ✅ | ❌ |
| すべての VM ライフサイクル操作 | ✅ | ✅ |
| OVA/テンプレート/リンククローンのデプロイ | ✅ | ✅ |
| データストアの参照とイメージのスキャン | ✅ | ✅ |
| スナップショット | ✅ | ✅ |
| ゲスト操作 | ✅ | ✅ |
インベントリ、アラーム、イベント、センサー、ホストサービス、スキャン機能は、現在 vmware-monitor にあります。
何によって保護されるか
上の表には、異なる2つのインターフェースが記載されています。どの保護がどちらに適用されるのか、率直に説明しておく価値があります。これを誤解することは、何の保護もないより悪いからです。信頼しているガードレールがあれば、それに頼るのをやめて対策することもなくなります。
CLI では、破壊的なコマンドは2回確認を求め、バイパス用フラグはありません。また、--dry-run は deploy iso、deploy mark-template、vm cancel-ttl、vm guest-download を除くすべての書き込みをプレビューします。これは、人間がコマンドを打ち間違えた場合に対処するものです。エージェントには対処できません。エージェントは yes | で両方の確認に応じてしまいます。
MCP では、破壊的と注釈されたすべてのツールに加え、migrate_vm とネットワーク/DRS の設定ツール(43個ある書き込みツールのうち23個。power_off_vm、migrate_vm、delete_cluster、スナップショット、ゲスト、TTL、Clean Slate、プラン関連のツール、reset_vcenter_alarm を含みます)は、confirm という引数を1つ受け取ります。この引数の既定値は書き込みを行わないプレビューです。引数を指定せずに呼び出すと、影響範囲を返し、何も変更しません。confirm=True を指定すると再測定が行われ、プレビューで問題(VMware Tools が実行されていない VM、メンテナンスモードの対象ホスト、まだホストが残っているクラスタ、見つからないスナップショットまたは重複したスナップショット)が見つかった場合や、何かを読み取れなかった場合は拒否されます。その際、説明用のエラーが失敗として監査記録に残ります。delete_vm では、プレビューで返された acknowledge_with も指定する必要があり、その後に VM が変更された場合や、電源がオンまたはサスペンド状態の場合は拒否されます。残りの20個の書き込みツール(作成、クローン、デプロイ、電源オン、再構成、スナップショット作成、ホスト追加、テンプレートと ISO の操作、ゲストへのダウンロード、プラン作成、アラーム確認)は、最初の呼び出しで実行されます。確認は認可ではありません。そのため、VMWARE_READ_ONLY スイッチは削除されたままです(これは MCP 経由でのみ適用されており、シェルを使えるエージェントなら CLI 経由で回避できました)。プレビューで得られる利点は、より限定的です。エージェントが、確認していないものを破壊しないようにします。
**書き込みが実行されるかどうかを実際に決めるのは、vCenter/ESXi のサービスアカウントです。**スキルには、作業に必要な権限だけを持つアカウントを付与してください。それ以上の操作は、どのインターフェースからでも vCenter 自体が拒否し、このスキルの内部から回避する方法はありません。**エージェントを読み取り専用で実行するには、読み取り専用の vCenter ロールを付与してください。**これは、適用される場所で行う1つの決定です。呼び出しはすべて、呼び出し元に結果が返される前に ~/.vmware/audit.db に記録されるため、何が起きたかを確認できます。~/.vmware/rules.yaml に任意の deny ルールを設定すると、すべての MCP 呼び出しの前にチェックされ、操作を拒否できます。たとえば、environment: production とラベル付けされた対象への書き込みを拒否できます。配布時のベースラインでは何も拒否されず、ルールは同じプロセス内で実行されます。RBAC に加えるガードレールであり、置き換えるものではありません。
**run_vm_guest_command は、特に慎重に考える必要があるツールです。**呼び出し元が指定したコマンドを、渡された認証情報を使ってゲスト OS 内で実行します。username の指定は必須で、既定のアカウントはありません。また、コマンドの実行内容に制限はありません。ゲストアカウントは vCenter のものとは別の認可境界です。読み取り専用の vCenter ロールを設定しても、このツールが VM 内で行う操作は制限されません。このスキルはゲストの認証情報を保存しません。MCP 経由の場合、認証情報はエージェントから見えるツール引数として渡されます(監査記録ではパスワードが伏せられます)。最小限の権限を持つゲストアカウントを渡し、エージェントに不要なゲスト認証情報は渡さないでください。upload_vm_guest_file は、サーバープロセスが読み取れるローカルファイルなら、どれでも読み取ります。
どのツールにゲートが設定され、どのツールには設定されていないかの完全な一覧は、references/capabilities.md にあります。数値は手作業で管理されるのではなく、テストスイートによって実際のツールレジストリと照合されます。
トラブルシューティング
「VM not found」エラー
vSphere では VM 名の大文字と小文字が区別されます。vmware-monitor inventory vms で表示される正確な名前を使ってください。
ゲスト実行の出力が空になる
run_vm_guest_command の代わりに run_vm_guest_command_with_output を使用してください。標準出力と標準エラーが自動的にキャプチャされます。基本の run_vm_guest_command は終了コードのみを返します。
OVA のデプロイがタイムアウトする
サイズの大きい OVA ファイル(>10GB)は、デフォルトの 120s のタイムアウトを超えることがあります。アップロードは HTTP NFC リース経由で行われます。vmware-aiops を実行しているマシンと ESXi 間のネットワークが安定していることを確認してください。
プランの適用が途中で失敗する
vmware-aiops plan list を実行して、失敗したプランのステータスを確認してください。rollback_vm_plan でロールバックするかどうかをユーザーに確認してください。取り消しできない手順(delete_vm)はロールバック中にスキップされます。
接続拒否/SSL エラー
- 接続先に到達できることを確認します:
vmware-aiops doctor - 自己署名証明書の場合:config.yaml で
verify_ssl: falseを設定します(ラボ環境のみ)
doctor が「no vSphere role」と報告する場合、またはすべてのコマンドが「session is not authenticated」で失敗する場合
アカウントはログインできますが、vSphere のロールがないため、vCenter はセッションを付与しません(AIops#47)。vCenter のルートフォルダーにロール(読み取り専用以上)を割り当ててください:Administration > Access Control > Global Permissions。パスワードを変更しても解決しません。vmware-aiops doctor はこのケースを名前付きで報告し、attention はこの接続先を未読としてカウントします(全体で少なくとも WARN)。
対応 AI プラットフォーム
| プラットフォーム | ステータス | 設定ファイル | AI モデル |
|---|---|---|---|
| Claude Code | ✅ ネイティブスキル | skills/vmware-aiops/SKILL.md | Anthropic Claude |
| Gemini CLI | ✅ コンテキストファイル + MCP | skills/vmware-aiops/SKILL.md | Google Gemini |
| OpenAI Codex CLI | ✅ スキル + AGENTS.md | skills/vmware-aiops/SKILL.md | OpenAI GPT |
| Aider | ✅ 規約 | skills/vmware-aiops/SKILL.md | 任意(クラウド + ローカル) |
| Continue CLI | ✅ ルール | skills/vmware-aiops/SKILL.md | 任意(クラウド + ローカル) |
| Trae IDE | ✅ ルール | skills/vmware-aiops/SKILL.md | Claude/DeepSeek/GPT-4o/Doubao |
| Kimi Code CLI | ✅ スキル | skills/vmware-aiops/SKILL.md | Moonshot Kimi |
| MCP サーバー | ✅ MCP プロトコル | vmware_aiops/mcp_server/ | 任意の MCP クライアント |
| Python CLI | ✅ 単独動作 | N/A | N/A |
プラットフォーム比較
| 機能 | Claude Code | Gemini CLI | Codex CLI | Aider | Continue | Trae IDE | Kimi CLI |
|---|---|---|---|---|---|---|---|
| クラウド AI | Anthropic | OpenAI | 任意 | 任意 | 複数 | Moonshot | |
| ローカルモデル | — | — | — | Ollama | Ollama | — | — |
| スキルシステム | SKILL.md | コンテキストファイル | SKILL.md | — | ルール | ルール | SKILL.md |
| MCP 対応 | ネイティブ | ネイティブ | スキル経由 | サードパーティ | ネイティブ | — | — |
| 無料枠 | — | 60 req/min | — | セルフホスト | セルフホスト | — | — |
MCP サーバー統合
vmware-aiops MCP サーバーは、MCP 互換のエージェントやツールすべてで動作します。すぐに使える設定テンプレートは examples/mcp-configs/ にあります。
| エージェント/ツール | ローカルモデルのサポート | 設定テンプレート | 統合ガイド |
|---|---|---|---|
| Xiaoguai (小怪) | ✅ セルフホスト可能、あらゆる LLM | MCP setup | ガイド |
| Goose | ✅ Ollama、LM Studio | goose.json | ガイド |
| LocalCowork | ✅ 完全オフライン | localcowork.json | ガイド |
| mcp-agent | ✅ Ollama、vLLM | mcp-agent.yaml | ガイド |
| VS Code Copilot | — | vscode-copilot.json | ガイド |
| Cursor | — | cursor.json | ガイド |
| Continue | ✅ Ollama | continue.yaml | ガイド |
| Claude Code | — | claude-code.json | — |
Xiaoguai (小怪) — 同じメンテナーが開発する、セルフホスト可能で監査を重視したエージェントプラットフォームです(Rust、単一バイナリ+組み込み SQLite)。vmware-aiops MCP サーバーをツールボックスの一つとして実行します。MCP の クライアント と サーバー の両方であるため、HMAC チェーン方式の監査ログと、人間がループ内で承認するゲートは、このスキル独自の監査+確認設計とよく適合します。詳しくは、MCP 統合ガイドをご覧ください。
完全なローカル運用(クラウド API は不要):
# Aider + Ollama + vmware-aiops (via SKILL.md)
aider --conventions skills/vmware-aiops/SKILL.md --model ollama/qwen2.5-coder:32b
# Any MCP agent + local model + vmware-aiops MCP server
# See examples/mcp-configs/ for your agent's config format
インストール
ステップ 0:前提条件
# Python 3.10+ required
python3 --version
# Node.js 18+ required for Gemini CLI and Codex CLI
node --version
ステップ 1:クローンして Python バックエンドをインストール
すべてのプラットフォームで同じ Python バックエンドを使用します。
git clone https://github.com/vmware-skills/VMware-AIops.git
cd VMware-AIops
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
ステップ 2:設定
mkdir -p ~/.vmware-aiops
cp config.example.yaml ~/.vmware-aiops/config.yaml
# Edit config.yaml with your vCenter/ESXi targets
.env ファイルでパスワードを設定します(推奨):
# Use the template
cp .env.example ~/.vmware-aiops/.env
# Edit and fill in your passwords, then lock permissions
chmod 600 ~/.vmware-aiops/.env
セキュリティに関する注意:パスワードがシェル履歴に残るのを防ぐため、コマンドラインの
exportよりも.envファイルの使用を推奨します。.envファイルの権限はchmod 600(所有者のみ読み書き可能)にしてください。
パスワードの環境変数の命名規則:
VMWARE_{TARGET_NAME_UPPER}_PASSWORD
# Replace hyphens with underscores, UPPERCASE
# Example: target "home-esxi" → VMWARE_HOME_ESXI_PASSWORD
# Example: target "prod-vcenter" → VMWARE_PROD_VCENTER_PASSWORD
セキュリティのベストプラクティス
- パスワードをスクリプトや設定ファイルにハードコードすることは絶対にしないでください
- パスワードをコマンドライン引数として渡すことは絶対にしないでください(
psで表示されます) chmod 600を設定した~/.vmware-aiops/.envを必ず使用してください- 接続は
config.yamlで必ず設定してください。認証情報は.envから自動的に読み込まれます - 設定ファイルの内容:
config.yamlには、接続先のホスト名、ポート、.envファイルへの参照が保存されます。パスワードやトークンは含まれません。すべてのシークレットは.envのみに保存されます - TLS:デフォルトで有効です。自己署名証明書を使用する ESXi ホストがある、隔離されたラボ環境でのみ無効にしてください
- Webhook:デフォルトで無効です。有効にすると、デーモンは重大な問題(アラーム、イベント、critical/panic/corrupt に一致する ESXi ログ行、接続できなかったターゲット)と、すべてのアラーム/イベントの警告を、設定した独自の URL にのみ送信します。サードパーティサービスには送信されません。ホストログの警告はスキャンログに残り、
infoの行は送信されません。ペイロードには問題の全文(エンティティ名、アラーム名、イベントメッセージ、ESXi ログの抜粋、接続エラー)が含まれ、ホスト名、IP アドレス、ユーザー名が含まれる場合があります。設定や.envの認証情報は含まれません - 最小権限:最小限の権限を持つ専用の vCenter サービスアカウントを使用してください。監視のみを行う場合は、読み取り専用の VMware-Monitor を推奨します
- プロンプトインジェクション対策:vSphere 由来のすべてのコンテンツは、出力前に長さを制限し、制御文字を除去したうえで、境界マーカーで囲みます
- コードレビュー:本番環境にデプロイする前に、ソースコードとコミット履歴を確認することを推奨します
- 本番環境での安全性:本番環境では、代わりに読み取り専用の VMware-Monitor を使用してください。AI エージェントはコンテキストを誤解し、意図しない破壊的な操作を実行する可能性があります。実際の事例から、適切な隔離がない AI 駆動のインフラストラクチャツールは、本番データベースや環境全体を削除するおそれがあることが示されています。VMware-Monitor は、コードベースに破壊的な関数が存在しないため、コードレベルでこのリスクを排除します
ステップ 3:AI ツールを接続する
以下から 1 つ以上選択してください。
オプション A:Claude Code
方法 1:Skills.sh または ClawHub(推奨)
どちらのインストーラーも、スキルを Claude Code のスキルディレクトリに配置します。
npx skills add vmware-skills/VMware-AIops
# or
clawhub install @zw008/vmware-aiops
方法 2:スキルを手動でインストール
git clone https://github.com/vmware-skills/VMware-AIops.git
cd VMware-AIops
# Copy the skill into Claude Code's personal skills directory
mkdir -p ~/.claude/skills/vmware-aiops
cp -r skills/vmware-aiops/. ~/.claude/skills/vmware-aiops/
ツールにアクセスするには(スキルのコンテキストだけでなく)、MCP サーバーも登録してください。
claude mcp add vmware-aiops -- vmware-aiops mcp
Claude Code を再起動し、次の操作を行います。
> Show me all VMs on esxi-lab.example.com
公式マーケットプレイスへの申請
このプラグインは、一般公開に向けて Anthropic 公式プラグインディレクトリに申請することもできます。
オプション B:Gemini CLI
# Install Gemini CLI
npm install -g @google/gemini-cli
# Load the skill as project context (Gemini CLI reads GEMINI.md on startup)
cp skills/vmware-aiops/SKILL.md ./GEMINI.md
ツールにアクセスするには(コンテキストだけでなく)、~/.gemini/settings.json で MCP サーバーを登録します。
{
"mcpServers": {
"vmware-aiops": {
"command": "vmware-aiops",
"args": ["mcp"],
"env": { "VMWARE_AIOPS_CONFIG": "~/.vmware-aiops/config.yaml" }
}
}
}
次に、Gemini CLI を起動します。
gemini
> Show me all VMs on my ESXi host
オプション C:OpenAI Codex CLI
# Install Codex CLI
npm i -g @openai/codex
# Or on macOS:
# brew install --cask codex
# Copy skill to Codex skills directory
mkdir -p ~/.codex/skills/vmware-aiops
cp skills/vmware-aiops/SKILL.md ~/.codex/skills/vmware-aiops/SKILL.md
# Copy AGENTS.md to project root
cp skills/vmware-aiops/SKILL.md ./AGENTS.md
次に、Codex CLI を起動します。
codex --enable skills
> List all VMs on my ESXi
オプション D:Aider(ローカルモデルに対応)
# Install Aider
pip install aider-chat
# Install Ollama for local models (optional)
# macOS:
brew install ollama
ollama pull qwen2.5-coder:32b
# Run with cloud API
aider --conventions skills/vmware-aiops/SKILL.md
# Or with local model via Ollama
aider --conventions skills/vmware-aiops/SKILL.md \
--model ollama/qwen2.5-coder:32b
オプション E:Continue CLI(ローカルモデルに対応)
# Install Continue CLI
npm i -g @continuedev/cli
# Copy rules file
mkdir -p .continue/rules
cp skills/vmware-aiops/SKILL.md .continue/rules/vmware-aiops.md
ローカルモデル用に ~/.continue/config.yaml を設定します。
models:
- name: local-coder
provider: ollama
model: qwen2.5-coder:32b
次に、以下を実行します。
cn
> Check ESXi health and alarms
オプション F:Trae IDE
ルールファイルをプロジェクトの .trae/rules/ ディレクトリにコピーします。
mkdir -p .trae/rules
cp skills/vmware-aiops/SKILL.md .trae/rules/project_rules.md
Trae IDE の Builder Mode は、起動時に .trae/rules/ 内の Markdown ファイルを読み込みます。
注:Trae IDE に Claude Code 拡張機能をインストールし、
.claude/skills/形式をそのまま使用することもできます。
オプション G:Kimi Code CLI
# Copy skill file to Kimi skills directory
mkdir -p ~/.kimi/skills/vmware-aiops
cp skills/vmware-aiops/SKILL.md ~/.kimi/skills/vmware-aiops/SKILL.md
オプション H:MCP サーバー(Glama / Claude Desktop)
MCP サーバーは、Model Context Protocol を通じて VMware の操作をツールとして公開します。MCP 互換のクライアント(Claude Desktop、Cursor など)であれば、どれでも利用できます。
uv tool install vmware-aiops の実行後、1 つのコマンドで MCP サーバーを起動できます(v1.5.15 以降):
# Recommended — single command, no network re-resolve
vmware-aiops mcp
# With a custom config path
VMWARE_AIOPS_CONFIG=/path/to/config.yaml vmware-aiops mcp
Claude Desktop の設定(claude_desktop_config.json):
{
"mcpServers": {
"vmware-aiops": {
"command": "vmware-aiops",
"args": ["mcp"],
"env": {
"VMWARE_AIOPS_CONFIG": "/path/to/config.yaml"
}
}
}
}
別の方法:uvx(インストール不要)または従来のエントリポイント
# Run without installing (requires PyPI access each launch)
uvx --from vmware-aiops vmware-aiops mcp
# Legacy entry point (still works, kept for backward compatibility)
vmware-aiops-mcp
社内の TLS プロキシ経由で接続していますか? uvx では
invalid peer certificate: UnknownIssuerエラーが発生する場合があります。 上記の推奨形式vmware-aiops mcpを使用する(ネットワーク不要)か、UV_NATIVE_TLS=trueを設定してください。
オプション I:スタンドアロン CLI(AI 不要)
# Already installed in Step 1
source .venv/bin/activate
vmware-aiops vm power-on my-vm --target home-esxi
vmware-aiops deploy ova ./ubuntu.ova --name my-vm --target home-esxi
vmware-aiops datastore browse datastore1 --target home-esxi
更新/アップグレード
すでにインストール済みですか?最新バージョンを入手するには、使用したチャネルのインストールコマンドを再実行してください:
| インストールチャネル | 更新コマンド |
|---|---|
| ClawHub | clawhub install @zw008/vmware-aiops |
| Skills.sh | npx skills add vmware-skills/VMware-AIops |
| Git clone | cd VMware-AIops && git pull origin main && uv pip install --no-sources -e .(--no-sources を指定しない場合、uv は兄弟ディレクトリの ../VMware-Monitor チェックアウトを検索します) |
| uv | uv tool install vmware-aiops --force |
現在のバージョンを確認するには、vmware-aiops --version を実行してください。
中国のクラウドモデル
中国国内のクラウド API を使いたい方や、海外サービスへのアクセスが制限されている方向けです。
DeepSeek
コスト効率に優れ、コーディング能力も高いモデルです。
# Set DeepSeek API key (get from https://platform.deepseek.com)
export DEEPSEEK_API_KEY="your-key"
# Run with Aider
aider --conventions skills/vmware-aiops/SKILL.md \
--model deepseek/deepseek-coder
永続的な設定 ~/.aider.conf.yml:
model: deepseek/deepseek-coder
conventions: skills/vmware-aiops/SKILL.md
Qwen(Alibaba Cloud)
Alibaba Cloud のコーディングモデルです。無料枠を利用できます。
# Set DashScope API key (get from https://dashscope.console.aliyun.com)
export DASHSCOPE_API_KEY="your-key"
aider --conventions skills/vmware-aiops/SKILL.md \
--model qwen/qwen-coder-plus
または、OpenAI 互換エンドポイント経由で使用します:
export OPENAI_API_BASE="https://dashscope.aliyuncs.com/compatible-mode/v1"
export OPENAI_API_KEY="your-dashscope-key"
aider --conventions skills/vmware-aiops/SKILL.md \
--model qwen-coder-plus-latest
Doubao(ByteDance)
export OPENAI_API_BASE="https://ark.cn-beijing.volces.com/api/v3"
export OPENAI_API_KEY="your-ark-key"
aider --conventions skills/vmware-aiops/SKILL.md \
--model your-doubao-endpoint-id
Continue CLI を使用する場合
~/.continue/config.yaml を設定します:
# DeepSeek
models:
- name: deepseek-coder
provider: openai-compatible
apiBase: https://api.deepseek.com/v1
apiKey: your-deepseek-key
model: deepseek-coder
# Qwen
models:
- name: qwen-coder
provider: openai-compatible
apiBase: https://dashscope.aliyuncs.com/compatible-mode/v1
apiKey: your-dashscope-key
model: qwen-coder-plus-latest
ローカルモデル(Aider + Ollama)
完全にオフラインで動作するため、クラウド API もインターネットも不要で、プライバシーを完全に保護できます。
Aider + Ollama + ローカルの Qwen/DeepSeek は、外部ネットワークから隔離された環境に最適です。
ステップ 1:Ollama をインストールする
# macOS
brew install ollama
# Linux — download from https://ollama.com/download and install manually
# See https://github.com/ollama/ollama for platform-specific instructions
ステップ 2:モデルを取得する
| モデル | コマンド | サイズ | 備考 |
|---|---|---|---|
| Qwen 2.5 Coder 32B | ollama pull qwen2.5-coder:32b | 約20GB | 最適なローカルコーディングモデル |
| Qwen 2.5 Coder 7B | ollama pull qwen2.5-coder:7b | 約4.5GB | メモリが少ない環境向け |
| DeepSeek Coder V2 | ollama pull deepseek-coder-v2 | 約8.9GB | 高い推論能力 |
| CodeLlama 34B | ollama pull codellama:34b | 約19GB | Meta のコーディングモデル |
ハードウェア要件:32B → 約20GB の VRAM(CPU の場合は 32GB の RAM)。7B → 8GB の RAM。
ステップ 3:Aider で実行する
pip install aider-chat
ollama serve
# Aider + local Qwen (recommended)
aider --conventions skills/vmware-aiops/SKILL.md \
--model ollama/qwen2.5-coder:32b
# Aider + local DeepSeek
aider --conventions skills/vmware-aiops/SKILL.md \
--model ollama/deepseek-coder-v2
# Low-memory option
aider --conventions skills/vmware-aiops/SKILL.md \
--model ollama/qwen2.5-coder:7b
永続的な設定 ~/.aider.conf.yml:
model: ollama/qwen2.5-coder:32b
conventions: skills/vmware-aiops/SKILL.md
ローカルアーキテクチャ
User → Aider CLI → Ollama (localhost:11434) → Qwen / DeepSeek local model
│ ↓
│ reads AGENTS.md instructions
│ ↓
└──────────────────────────────→ vmware-aiops CLI ──→ ESXi / vCenter
ヒント:ローカルモデルは完全にオフラインで動作するため、外部ネットワークから隔離された環境や、厳格なデータコンプライアンスが求められる環境に最適です。
CLI リファレンス
# Diagnostics
vmware-aiops doctor # Check environment, config, connectivity
vmware-aiops doctor --skip-auth # Skip vSphere auth check (faster)
vmware-aiops access-info [--tool <mcp-tool>] [--target <name>] # Account in use + privileges per tool
# MCP Config Generator
vmware-aiops mcp-config generate --agent goose # Generate config for Goose
vmware-aiops mcp-config generate --agent claude-code # Generate config for Claude Code
vmware-aiops mcp-config list # List all supported agents
# VM operations
vmware-aiops vm power-on my-vm # Power on
vmware-aiops vm power-off my-vm # Graceful shutdown (2x confirm)
vmware-aiops vm power-off my-vm --force # Force power off (2x confirm)
vmware-aiops vm create my-new-vm --cpu 4 --memory 8192 --disk 100 # Create VM
vmware-aiops vm delete my-vm # Delete VM (asks twice; --dry-run previews)
vmware-aiops vm reconfigure my-vm --cpu 4 --memory 8192 # Reconfigure (2x confirm)
vmware-aiops vm snapshot-create my-vm --name "before-upgrade" # Create snapshot
vmware-aiops vm snapshot-list my-vm # List snapshots
vmware-aiops vm snapshot-revert my-vm --name "before-upgrade" # Revert snapshot
vmware-aiops vm snapshot-delete my-vm --name "before-upgrade" # Delete snapshot (waits ≤30 min for consolidation)
vmware-aiops vm snapshot-delete my-vm --name "old-big" --no-wait # Fire async, return a task id
vmware-aiops vm task-status task-1234 # Poll an async task by id
vmware-aiops vm clone my-vm --new-name my-vm-clone # Clone VM
vmware-aiops vm migrate my-vm --to-host esxi-02 # vMotion
vmware-aiops vm set-ttl my-vm --minutes 60 # Auto-delete in 60 min
vmware-aiops vm cancel-ttl my-vm # Cancel TTL
vmware-aiops vm list-ttl # Show all TTLs
vmware-aiops vm clean-slate my-vm --snapshot baseline # Revert to baseline (2x confirm)
# Guest Operations (requires VMware Tools in guest)
vmware-aiops vm guest-exec my-vm --cmd /bin/bash --args "-c 'whoami'" --user root
vmware-aiops vm guest-upload my-vm --local ./script.sh --guest /tmp/script.sh --user root
vmware-aiops vm guest-download my-vm --guest /var/log/syslog --local ./syslog.txt --user root
# Plan → Apply (multi-step operations)
vmware-aiops plan list # List pending/failed plans
# Deploy
vmware-aiops deploy ova ./ubuntu.ova --name my-vm --datastore ds1 # Deploy from OVA
vmware-aiops deploy template golden-ubuntu --name new-vm # Deploy from template
vmware-aiops deploy linked-clone --source base-vm --snapshot clean --name test-vm # Linked clone (seconds)
vmware-aiops deploy iso my-vm --iso "[datastore1] iso/ubuntu-22.04.iso" # Attach ISO
vmware-aiops deploy mark-template golden-vm # Convert VM to template
vmware-aiops deploy batch-clone --source base-vm --count 5 --prefix lab # Batch clone
vmware-aiops deploy batch deploy.yaml # Batch deploy from YAML spec
# Cluster
vmware-aiops cluster info my-cluster # Cluster details (HA/DRS status)
vmware-aiops cluster create my-cluster --ha --drs # Create cluster with HA+DRS
vmware-aiops cluster delete my-cluster # Delete cluster (2x confirm)
vmware-aiops cluster add-host my-cluster --host esxi-03 # Add host to cluster (2x confirm)
vmware-aiops cluster remove-host my-cluster --host esxi-03 # Remove host (2x confirm)
vmware-aiops cluster configure my-cluster --ha --drs # Configure HA/DRS (2x confirm)
# Alarm management
vmware-aiops alarm list # List triggered alarms
vmware-aiops alarm acknowledge esxi-01 "Host memory usage" # Acknowledge alarm
vmware-aiops alarm reset esxi-01 "Host memory usage" # Clear alarms (2x confirm; clears ALL matching entity type + status)
# Datastore (browse and scan only — iSCSI/vSAN moved to vmware-storage)
vmware-aiops datastore browse datastore1 --path "iso/" # Browse datastore
vmware-aiops datastore scan-images --target home-esxi # Scan all datastores for images
# Scan
vmware-aiops scan now # One-time scan of alarms and events (host logs: daemon only)
# Daemon
vmware-aiops daemon start # Start scanner
vmware-aiops daemon status # Check status
vmware-aiops daemon stop # Stop daemon
# Companion skills for other operations:
# vmware-monitor: inventory, alarms, events, sensors
# vmware-storage: datastores, iSCSI, vSAN
# vmware-vks: Tanzu/TKC cluster lifecycle
設定
すべてのオプションについては、config.example.yaml を参照してください。
| セクション | キー | デフォルト | 説明 |
|---|---|---|---|
| targets | name | — | わかりやすい名前 |
| targets | host | — | vCenter/ESXi のホスト名または IP アドレス |
| targets | type | vcenter | vcenter または esxi |
| targets | port | 443 | 接続ポート |
| targets | verify_ssl | true | 対象の TLS 証明書を検証します(自己署名証明書を使用するラボホストの場合に限り false に設定してください) |
| scanner | interval_minutes | 15 | スキャン間隔 |
| scanner | severity_threshold | warning | 最小重大度:critical/warning/info |
| scanner | lookback_hours | 1 | さかのぼってスキャンする時間 |
| scanner | log_types | — | どのコードからも読み取られません。デーモンは常に hostd、vmkernel、vpxa の各ホストログを読み取ります。この設定を変更しても何も変わりません |
| notify | log_file | ~/.vmware-aiops/scan.log | JSONL ログ出力 |
| notify | webhook_url | — | Webhook エンドポイント(Slack、Discord など) |
プロジェクト構成
VMware-AIops/
├── skills/ # Skills index (npx skills add)
│ └── vmware-aiops/
│ ├── SKILL.md # Slimmed-down skill (progressive disclosure)
│ └── references/ # Detailed docs loaded on-demand
│ ├── capabilities.md # Full capabilities tables
│ ├── cli-reference.md # Complete CLI reference
│ └── setup-guide.md # Install, security, AI platforms
├── vmware_aiops/ # Python backend
│ ├── config.py # YAML + .env config
│ ├── connection.py # Multi-target pyVmomi
│ ├── cli/ # Typer CLI (double confirm)
│ ├── ops/ # Operations
│ │ ├── inventory.py # VMs, hosts, datastores, clusters
│ │ ├── health.py # Alarms, events, sensors
│ │ ├── vm_lifecycle.py # VM CRUD, snapshots, clone, migrate
│ │ ├── vm_deploy.py # OVA, template, linked clone, batch deploy
│ │ └── datastore_browser.py # Datastore browsing, image discovery
│ ├── scanner/ # Log scanning daemon
│ ├── notify/ # Notifications (JSONL + webhook)
│ └── mcp_server/ # MCP server wrapper
│ ├── server.py # FastMCP server with tools
│ └── __main__.py
├── examples/mcp-configs/ # MCP client config templates
├── tests/ # Test suite
├── smithery.yaml # Smithery marketplace config
├── RELEASE_NOTES.md
├── config.example.yaml
└── pyproject.toml
API カバレッジ
pyVmomi(vSphere Web Services API / SOAP)を基盤としています。
| API オブジェクト | 用途 |
|---|---|
vim.VirtualMachine | VM のライフサイクル、スナップショット、クローン、移行 |
vim.HostSystem | ESXi ホスト情報、センサー、サービス |
vim.Datastore | ストレージ容量、タイプ、アクセス性 |
vim.host.DatastoreBrowser | ファイルの閲覧、イメージ(ISO/OVA/VMDK)の検出 |
vim.OvfManager | OVA のインポートとデプロイ |
vim.ClusterComputeResource | クラスター、DRS、HA |
vim.Network | ネットワークの一覧表示 |
vim.alarm.AlarmManager | アクティブなアラームの監視 |
vim.event.EventManager | イベント/ログのクエリ |
関連プロジェクト
| スキル | 対象範囲 | ツール | インストール |
|---|---|---|---|
| vmware-aiops | VM のライフサイクル、デプロイ、ゲスト操作、クラスター、データストアの閲覧、トリアージ | 49 | uv tool install vmware-aiops |
| vmware-monitor | 読み取り専用の監視、アラーム、イベント、調査バンドル | 27 | uv tool install vmware-monitor |
| vmware-storage | データストア、iSCSI、vSAN | 11 | uv tool install vmware-storage |
| vmware-vks | Tanzu Namespaces、TKC クラスターのライフサイクル | 20 | uv tool install vmware-vks |
| vmware-nsx | NSX ネットワーキング:セグメント、ゲートウェイ、NAT、ルーティング、IPAM | 33 | uv tool install vmware-nsx-mgmt |
| vmware-nsx-security | DFW ポリシー/ルール、セキュリティグループ、Traceflow、IDS/IPS | 21 | uv tool install vmware-nsx-security |
| vmware-aria | Aria Operations のメトリクス、アラート、容量、異常 | 28 | uv tool install vmware-aria |
| vmware-avi | AVI(NSX ALB)ロードバランシング、AKO Kubernetes 操作 | 28 | uv tool install vmware-avi |
| vmware-harden | コンプライアンスベースライン(CIS / vSphere SCG / 等保 / PCI-DSS)、ドリフト検出 | 6 | uv tool install vmware-harden |
トラブルシューティングと貢献
エラーや問題が発生した場合は、エラーメッセージ、ログ、またはスクリーンショットを [email protected] までお送りください。貢献も歓迎します。このプロジェクトの保守と改善にぜひご参加ください!
リモートアクセス(HTTPS)とツールの制限
デフォルトでは、vmware-aiops mcp は stdio で 1 つのローカルクライアントと通信し、すべてのツールを提供します。次の 2 つのオプションで動作を変更できます
(vmware-policy ≥ 1.21.0)。
HTTPS で提供すると、ほかのマシンのクライアントから接続できます。呼び出し元はすべてベアラートークンが必要です。
vmware-audit token create alice # prints the token once; give it to alice
vmware-audit token list # names only
vmware-audit token revoke alice # refused from its next request, no restart
vmware-aiops mcp --transport https --host 0.0.0.0 --port 8443 \
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
--public-name mcp.example.com
クライアントを接続します(ここでは Claude Code を使用しています。ストリーミング可能な HTTP とカスタムヘッダーに対応する MCP クライアントであれば使用できます)。
claude mcp add --transport http vmware-aiops https://mcp.example.com:8443/mcp \
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
{
"mcpServers": {
"vmware-aiops": {
"type": "http",
"url": "https://mcp.example.com:8443/mcp",
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
}
}
}
- トークンがないとサーバーは起動せず、
--public-nameの範囲外の Host/Origin 値を拒否し、未認証のリクエストが 401 を返すことをバインド前に確認します。クライアントがこれらの名前を信頼する証明書を使用してください。 - 同じマシン上の TLS 終端リバースプロキシの背後では、
--transport http --host 127.0.0.1 --public-name mcp.example.comを使用し、Authorizationヘッダーを転送してください。 - 別のマシン上のロードバランサーまたはゲートウェイの背後では、
--transport httpsを維持します(自己署名証明書でもかまいません)。ロードバランサーがHostとして送信するホスト名を--public-nameに指定し、Authorizationを転送するようにしてください。 ヘルスプローブには、トークンが不要で{"status": "ok"}のみを返すGET /healthzを使用できます (vmware-policy ≥ 1.23.0)。 - 各リクエストに
traceparentまたはX-Request-IDを送信すると、監査ログの行に保存されます。vmware-audit log --correlation-id IDを実行すると、1 つのプラットフォームリクエストに関連する呼び出しを検索できます。 - このサーバー上のファイルを読み書きするツール(ここでは、ゲストファイルのアップロード/ダウンロード、OVA およびデプロイ仕様ファイル)は、サーバーの設定、トークン、監査ログ、TLS キーに触れることはありません。また、ネットワーク経由では、
VMWARE_MCP_FILE_ROOTでディレクトリを指定しない限り無効です (vmware-policy ≥ 1.23.1)。 - 監査ログには各呼び出し元が
token:<name>として記録されます。呼び出しは並行して実行され、ターゲットごとに最大VMWARE_MCP_POOL_SIZE(デフォルトは 2)個のセッションを使用します。各セッションはターゲットへのログインであり、呼び出しはセッションを得るまで最大 300 秒待機します。 - エンドポイントにアクセスできる人は誰でも、このサーバーのアカウントで操作できます。 トークンは呼び出し元を識別しますが、プラットフォーム上の権限を付与するものではありません。権限レベルごとにエンドポイントを 1 つ実行してください。
- 1 つのエンドポイントを複数のユーザーまたはロールで共有する場合:
vmware-audit roles enableを 1 回実行し、各トークンにロールを割り当てます(vmware-audit token create NAME --role reader、または使用可能なツールとターゲットを指定するroles.yaml内のロール。vmware-policy ≥ 1.24.0)。ロールによって、このエンドポイントでトークンが呼び出せる対象を制限できます。アカウントの権限を超える権限は付与できません。vmware-policy の README の「Roles for network callers」を参照してください。
読み取りツールと、選択した書き込みツールのみを提供します:
vmware-aiops mcp --expose read --allow-write acknowledge_vcenter_alarm
# or: VMWARE_AIOPS_MCP_EXPOSE=read VMWARE_AIOPS_MCP_ALLOW_WRITE=acknowledge_vcenter_alarm vmware-aiops mcp
提供対象外のツールは、クライアントのツール一覧に表示されません。無効な値や不明な書き込みツールが指定されると、サーバーは停止します (終了コード 2)。これはクライアントに提供するツールを制限するものであり、認可ではありません。そのため、アカウント自体には最小限の権限を設定してください。
詳細:skills/vmware-aiops/references/setup-guide.md(「MCP を HTTPS で提供する」「提供するツールの制限」)。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。