VMware NSX
免責事項: これはコミュニティ保守のオープンソースプロジェクトであり、VMware, Inc. または Broadcom Inc. とは提携、推奨、またはスポンサー関係にありません。 「VMware」および「NSX」はBroadcomの商標です。ソースコードは github.com/zw008/VMware-NSX でMITライセンスのもと公開監査可能です。
VMware NSX ネットワーキング管理 — セグメント、ゲートウェイ、NAT、ルーティング、IPAM のための32のMCPツール。
ドメイン特化型のNSX-T / NSX 4.x Policy API向けネットワーキングスキル。 関連スキル: vmware-nsx-security (DFW/ファイアウォール)、vmware-aiops (VMライフサイクル)、vmware-monitor (読み取り専用監視)、vmware-storage (iSCSI/vSAN)、vmware-vks (Tanzu Kubernetes)、vmware-aria (メトリクス/アラート/キャパシティ)、vmware-avi (AVI/ALB/AKO)、vmware-harden (コンプライアンスベースライン)。 | vmware-pilot (ワークフローオーケストレーション) | vmware-policy (監査/ポリシー)
このスキルの機能
| カテゴリ | ツール | 数 | 読み取り / 書き込み |
|---|---|---|---|
| セグメント | リスト、詳細取得、作成、更新、削除 | 5 | 2R / 3W |
| Tier-0 ゲートウェイ | リスト、詳細取得、BGPネイバー、BGP設定 | 4 | 3R / 1W |
| Tier-1 ゲートウェイ | リスト、詳細取得、作成、更新、削除 | 5 | 2R / 3W |
| NAT | ルールリスト、ルール作成、ルール削除 | 3 | 1R / 2W |
| スタティックルート | リスト、作成、削除 | 3 | 1R / 2W |
| IPプール | リスト、使用状況取得、プール作成、プール削除 | 4 | 2R / 2W |
| ファブリックインベントリ | トランスポートゾーン、トランスポートノード、エッジクラスタ | 3 | 3R / 0W |
| ヘルス | NSXアラーム、トランスポートノードステータス、エッジクラスタステータス、マネージャステータス | 4 | 4R / 0W |
| トラブルシューティング | 論理ポートステータス、VM→セグメント検索 | 2 | 2R / 0W |
合計: 33ツール (20読み取り専用 + 13書き込み)
クイックインストール
uv tool install vmware-nsx-mgmt
vmware-nsx doctor
このスキルを使用するタイミング
- NSXセグメント(オーバーレイ/VLANバック)のリスト、作成、変更
- Tier-0 / Tier-1 ゲートウェイの作成または管理
- NATルール(SNAT、DNAT、リフレクティブ)の設定
- スタティックルートの表示または追加、BGPネイバーの確認
- IPプールとサブネット割り当ての管理
- NSXアラーム、トランスポートノードのヘルス、エッジクラスタステータスの確認
- VMが接続されているセグメントの特定
- 論理ポートステータスのトラブルシューティング
関連スキルの使用:
- 分散ファイアウォール、セキュリティグループ、DFWルール、IDS/IPS →
vmware-nsx-security - VMライフサイクル、デプロイメント、ゲスト操作 →
vmware-aiops - vSphereインベントリ、ヘルス、アラーム、イベント →
vmware-monitor - ストレージ:iSCSI、vSAN、データストア →
vmware-storage - Tanzu Kubernetes →
vmware-vks - ロードバランシング、AVI/ALB、AKO、Ingress →
vmware-avi
関連スキル — スキルルーティング
| ユーザーの意図 | 推奨スキル |
|---|---|
| NSXネットワーキング:セグメント、ゲートウェイ、NAT、ルーティング、IPAM | vmware-nsx ← このスキル |
| NSXセキュリティ:DFWルール、セキュリティグループ、IDS/IPS | vmware-nsx-security |
| 読み取り専用vSphere監視、アラーム、イベント | vmware-monitor |
| VMライフサイクル、デプロイメント、ゲスト操作 | vmware-aiops |
| ストレージ:iSCSI、vSAN、データストア | vmware-storage |
| Tanzu Kubernetes (vSphere 8.x+) | vmware-vks |
| Aria Ops:メトリクス、アラート、キャパシティ計画 | vmware-aria |
| 承認付きマルチステップワークフロー | vmware-pilot |
| コンプライアンスベースライン(CIS / 等保 / PCI-DSS)、ドリフト検出、LLM修復アドバイザー | vmware-harden (uv tool install vmware-harden) |
| ロードバランサー、AVI、ALB、AKO、Ingress | vmware-avi (uv tool install vmware-avi) |
| 監査ログクエリ | vmware-policy (vmware-audit CLI) |
一般的なワークフロー
アプリケーションネットワークの作成(セグメント + T1ゲートウェイ + NAT)
事前チェック(盲目的なシーケンスではなく判断):
- サブネット競合チェック:
inventory list-segmentsとnetworking list-ip-poolsをスキャンし、提案されたCIDRとの重複がないか確認します。サブネットの重複は非対称ルーティングやサイレントブラックホールリングを引き起こします—NSXは警告しません。 - エッジクラスタのキャパシティ:選択した
--edge-clusterが正常であること(inventory list-edge-clusters+health edge-cluster-status <id>)と、SR(サービスルーター)制限に達していないことを確認します。完全にロードされたエッジクラスタはT1の作成を受け入れますが、ルーティングは失敗します。 - T0アップリンク:親T0には上流へのBGP/スタティックルートがすでに設定されている必要があります—そうでないと、SNATは内部では機能しますが、外部トラフィックはどこにも行きません。
- NAT IP:
--translatedIPは、T0によってアドバタイズされるルーティング可能なアドレスプールからのものでなければなりません;ランダムなIPを使用すると、半分しか機能しないネットワークが作成されます。 - 常に最初に
--dry-runを実行 — セグメントが実行中のVMに接続されると、削除するにはすべてのポートをデタッチする必要があります。
手順:
vmware-nsx gateway create-tier1 app-t1 --name app-t1 --edge-cluster <ec-path> --tier0 <t0-path> --dry-run→ 確認後、実際に実行vmware-nsx segment create app-web-seg --name app-web-seg --tz <tz-overlay-path> --subnet <gw-cidr>vmware-nsx nat create-rule --tier1 app-t1 --rule-id snat-1 --action SNAT --source <private-cidr> --translated <pub-ip>- エンドツーエンドの検証:
inventory list-segments、networking list-nat-rules app-t1、および新しいセグメントに接続されたVMでのテスト - 失敗時:接続エラーまたはHTTPエラーは単一の教育行を出力します(例:403 → NSXロール権限を確認;404 → 一致するリストコマンドを実行して正確なIDを確認)。
vmware-nsx doctorを実行して接続と資格情報を確認し、修正して失敗したステップを再実行します—以前に完了したステップは冪等なPUTで安全に再適用できます。
ネットワークヘルスの確認
判断:ヘルスエンドポイントを単に列挙するのではなく、それらを関連付けます。以下の順序は原因から症状へのマッピングです:マネージャがダウンしている場合、トランスポートノードもダウンして見えます(誤検知);トップダウンで修正します。
vmware-nsx health manager-status— いずれかのマネージャノードがDEGRADEDまたはDOWNの場合、ここで停止し、ダウンストリームシグナルを信頼する前に解決しますvmware-nsx inventory list-transport-nodes次にhealth transport-node-status <id>でUPでないノード — 5分以上ダウンしているノードにフラグを立てます;一時的なブリップは正常ですvmware-nsx inventory list-edge-clusters次にhealth edge-cluster-status <id>— SR配置がバランスしていることを確認します;1つのエッジがSRの80%を保持しているのは単一障害点ですvmware-nsx health alarms --severity HIGH(CRITICALで繰り返し)— 重要度フィルターは完全一致であり、「以上」ではありませんvmware-monitorでvSphereホストイベントをクロスチェック — vCenterへの接続を失ったホストは、しばしばNSXの問題として偽装します
VM接続のトラブルシューティング
判断:接続障害は3つのレイヤーのいずれかで発生します。最初にどのレイヤーかを特定し、それから掘り下げます—ランダムにプローブしないでください。
- レイヤー1 — VMからセグメント:VMにセグメントがない、vNICが間違っている、またはポートが管理ダウン →
troubleshoot vm-segment+troubleshoot port-status - レイヤー2 — セグメントからゲートウェイ:セグメントがT1に接続されていない、T1がT0に接続されていない →
inventory get-tier1でTier-0パスが表示されない - レイヤー3 — ゲートウェイから上流:T0 BGP/スタティックが欠落している、またはSNATが設定されていない →
networking bgp-neighbors、networking list-nat-rules
手順(障害レイヤーが特定されたらすぐに停止):
- レイヤー1:
troubleshoot vm-segment my-vm-01→ ポートがない場合は、最初にvSphere vNICバインディングを確認 - レイヤー1:
troubleshoot port-status <segment-id>→ 管理ダウンまたはDFWブロック?DFWの場合は、vmware-nsx-securityにジャンプ - レイヤー2:
inventory get-tier1 app-t1→ Tier-0パスが存在し、ルートアドバタイズが有効か?そうでない場合、T1↔T0リンクが切断 - レイヤー3:
networking bgp-neighbors tier0-gw→ すべてのネイバーがESTABLISHED?フラッピング → 上流の問題 - レイヤー3:
networking list-nat-rules app-t1→ SNATルールが送信元CIDRをカバーしているか?CIDRの入力ミスが最も一般的な原因
マルチターゲット操作
すべてのコマンドは --target <name> を受け入れ、設定から特定のNSX Managerに対して操作します:
# デフォルトターゲット(config.yamlの最初)
vmware-nsx inventory list-segments
# 特定のターゲット
vmware-nsx inventory list-segments --target nsx-prod
vmware-nsx health alarms --target nsx-lab
使用モード
| シナリオ | 推奨 | 理由 |
|---|---|---|
| ローカル/小規模モデル(Ollama、Qwen) | CLI | MCPの |
| クラウドモデル(Claude、GPT-4o) | どちらでも | MCPは構造化JSON I/Oを提供 |
| 自動化パイプライン | MCP | 型安全なパラメータ、構造化出力 |
MCPツール(33 — 20読み取り、13書き込み)
すべてのMCPツールは、オプションの target パラメータを受け入れ、接続先のNSX Managerを選択します。
| カテゴリ | ツール | タイプ | 説明 |
|---|---|---|---|
| セグメント | list_segments | 読み取り | すべてのセグメントをタイプ、サブネット、管理状態、ポート数とともに一覧表示 |
get_segment | 読み取り | ポートやサブネット設定を含むセグメント詳細を取得 | |
create_segment | 書き込み | サブネットとゲートウェイを持つオーバーレイまたはVLANセグメントを作成 | |
update_segment | 書き込み | セグメントプロパティ(名前、サブネット、ゲートウェイリンク)を更新 | |
delete_segment | 書き込み | セグメントを削除(接続ポートがある場合は警告) | |
| Tier-0 GW | list_tier0_gateways | 読み取り | HAモードとトランジットサブネットを含むTier-0ゲートウェイを一覧表示 |
get_tier0_gateway | 読み取り | Tier-0詳細を取得:HAモード、フェイルオーバー、トランジットサブネット | |
get_bgp_neighbors | 読み取り | BGPネイバーセッションを状態、ASN、プレフィックスとともに一覧表示 | |
configure_tier0_bgp | 書き込み | Tier-0でBGP(ローカルAS、ECMP、inter-SR iBGP)を設定 | |
| Tier-1 GW | list_tier1_gateways | 読み取り | リンクされたTier-0とルートアドバタイズを含むTier-1ゲートウェイを一覧表示 |
get_tier1_gateway | 読み取り | Tier-1詳細を取得:Tier-0リンク、ルートアドバタイズ | |
create_tier1_gateway | 書き込み | エッジクラスタとTier-0リンクを持つTier-1ゲートウェイを作成 | |
update_tier1_gateway | 書き込み | Tier-1プロパティを更新(ルートアドバタイズ、Tier-0リンク) | |
delete_tier1_gateway | 書き込み | Tier-1ゲートウェイを削除(最初にデフォルトのlocale-serviceを削除) | |
| NAT | list_nat_rules | 読み取り | Tier-1ゲートウェイ上のNATルールを一覧表示 |
create_nat_rule | 書き込み | ゲートウェイ上にSNAT/DNAT/リフレクティブNATルールを作成 | |
delete_nat_rule | 書き込み | NATルールを削除 | |
| スタティックルート | list_static_routes | 読み取り | Tier-1ゲートウェイ上のスタティックルートを一覧表示 |
create_static_route | 書き込み | ネットワークとネクストホップでスタティックルートを追加 | |
delete_static_route | 書き込み | スタティックルートを削除 | |
| IPプール | list_ip_pools | 読み取り | 使用状況サマリー付きでIPプールを一覧表示 |
get_ip_pool_usage | 読み取り | プールの割り当て使用状況を表示 | |
create_ip_pool | 書き込み | 割り当て範囲付きの新しいIPアドレスプールを作成 | |
delete_ip_pool | 書き込み | IPアドレスプールを完全に削除 | |
| ファブリック | list_transport_zones | 読み取り | タイプ(OVERLAY/VLAN)付きでトランスポートゾーンを一覧表示 |
list_transport_nodes | 読み取り | ノードタイプと状態付きでトランスポートノードを一覧表示 | |
list_edge_clusters | 読み取り | メンバー数とデプロイメントタイプ付きでエッジクラスタを一覧表示 | |
| ヘルス | list_nsx_alarms | 読み取り | 重要度でフィルタリングされたアクティブなNSXアラームを一覧表示 |
get_transport_node_status | 読み取り | トランスポートノードの接続性と設定状態 | |
get_edge_cluster_status | 読み取り | エッジクラスタメンバーの状態とフェイルオーバー設定 | |
get_nsx_manager_status | 読み取り | NSX Managerクラスタのヘルスとノードロール | |
| トラブルシューティング | get_logical_port_status | 読み取り | セグメント上のすべてのポートの実現状態 |
get_segment_port_for_vm | 読み取り | 表示名でVMが接続されているセグメントを検索 |
読み取り/書き込み分割:20ツールは読み取り専用、12ツールは状態を変更します。書き込みツールは明示的なパラメータを必要とし、監査ログに記録されます。ドライラン preview(--dry-run)はCLIの機能です。MCP書き込みツールは直接実行されます。
CLIクイックリファレンス
# インベントリ(読み取り専用)
vmware-nsx inventory list-segments [--target <name>]
vmware-nsx inventory get-segment <segment-id>
vmware-nsx inventory list-tier0s
vmware-nsx inventory get-tier0 <tier0-id>
vmware-nsx inventory list-tier1s
vmware-nsx inventory get-tier1 <tier1-id>
vmware-nsx inventory list-transport-zones
vmware-nsx inventory list-transport-nodes
vmware-nsx inventory list-edge-clusters
# ネットワーキング(読み取り専用)
vmware-nsx networking list-nat-rules <tier1-id>
vmware-nsx networking bgp-neighbors <tier0-id>
vmware-nsx networking list-static-routes <tier1-id>
vmware-nsx networking list-ip-pools
vmware-nsx networking ip-pool-usage <pool-id>
# セグメント管理(書き込み)
vmware-nsx segment create <id> --name <name> --tz <tz-path> [--vlan '100' | '100-200'] [--subnet <gw-cidr>] [--dry-run]
vmware-nsx segment update <id> [--name <name>] [--subnet <gw-cidr>] [--dry-run]
vmware-nsx segment delete <id> [--dry-run]
# ゲートウェイ管理(書き込み)
vmware-nsx gateway create-tier1 <id> --name <name> [--tier0 <t0-path>] [--edge-cluster <ec-path>] [--dry-run]
vmware-nsx gateway update-tier1 <id> [--name <name>] [--tier0 <t0-path>] [--advertise <types>] [--dry-run]
vmware-nsx gateway delete-tier1 <id> [--dry-run]
vmware-nsx gateway configure-tier0-bgp <tier0-id> --local-as <asn> [--ecmp/--no-ecmp] [--dry-run]
# NAT(書き込み)
vmware-nsx nat create-rule --tier1 <id> --rule-id <id> --action SNAT --source <cidr> --translated <ip> [--dry-run]
vmware-nsx nat delete-rule --tier1 <id> --rule-id <id> [--dry-run]
# スタティックルート(書き込み)
vmware-nsx route create-static --tier1 <id> --route-id <id> --network <cidr> --next-hop <ip> [--dry-run]
vmware-nsx route delete-static --tier1 <id> --route-id <id> [--dry-run]
# IPプール(書き込み)
vmware-nsx ip-pool create <pool-id> --name <name> --start <ip> --end <ip> --cidr <cidr> [--gateway <ip>] [--dry-run]
# ヘルスとトラブルシューティング(読み取り専用)
vmware-nsx health alarms [--severity CRITICAL]
vmware-nsx health transport-node-status <node-id>
vmware-nsx health edge-cluster-status <cluster-id>
vmware-nsx health manager-status
vmware-nsx troubleshoot port-status <segment-id>
vmware-nsx troubleshoot vm-segment <vm-name>
設定
最初の実行時に、vmware-nsx init が ~/.config/vmware-nsx/config.yaml を作成します:
# デフォルトターゲット
default: nsx-prod
targets:
nsx-prod:
host: https://nsx-mgr-prod.example.com
username: admin
password: ${NSX_PASSWORD} # 環境変数を推奨
ssl_verify: true
cert: /path/to/ca-bundle.crt # オプション:カスタムCA束
nsx-lab:
host: https://nsx-mgr-lab.example.com
username: admin
password: ${NSX_LAB_PASSWORD}
ssl_verify: false # ラボ環境用
nsx-dr:
host: https://nsx-mgr-dr.example.com
username: admin
password: ${NSX_DR_PASSWORD}
ssl_verify: true
ベストプラクティス:
- パスワードを
config.yamlに平文で保存しないでください — 代わりに$(...)/${...}環境変数を使用するか、HashiCorp Vaultのような秘密管理ソリューションを使用してください。 nsx-prodのような各ターゲットに記述的な名前を付けます。- プロダクション環境では
ssl_verify: falseを使用しないでください。
診断
vmware-nsx doctor
以下を診断します:
- 設定ファイルが存在し解析可能か
- 各ターゲットに到達可能か(HTTPS TCP接続)
- 資格情報が有効か(NSX API認証)
- APIバージョンの互換性(NSX 4.x+)
- ユーザーロールの権限(ネットワーク管理に必要なロール)
doctor に失敗したターゲットは、準備が整うまでスキップされます。
セキュリティに関する注意
- パスワードを環境変数として渡す(推奨)またはセキュアなボールトから渡します。
- MCPモードは外部ツールコールに依存しており、ワークフローが正しく構成されていることを確認してください。
- このツールはNSX Manager APIに直接接続します。APIがネットワーク経由でアクセス可能であることを確認してください。
ライセンス
MIT