VMware 環境の仮想マシン IP に基づいて ESXi ホストを見つける

VMware 環境の仮想マシン IP に基づいて ESXi ホストを見つける

VMware vSphere 仮想環境では、特定の IP が配置されている仮想マシンと ESXi ホストを見つける必要がある場合があります。 VMware 仮想マシンに VMware ツールがインストールされている場合は、API を通じて IP の場所を直接見つけることができますが、環境内のすべての仮想マシンに VMware ツールがインストールされているわけではないため、MAC アドレスを通じてのみ見つけることができます。

ターゲット IP が 10.95.48.11 であると仮定すると、まず、ターゲット IP と同じレイヤー 2 ネットワーク内の仮想マシンから 10.95.48.11 に対応する MAC アドレスを取得します。

  1. [root@localhost ~]# ping 10.95.48.11 -c 2
  2. PING 10.95.48.11 (10.95.48.11) 56(84)バイトデータ。
  3. 10.95.48.11からの64 バイト: icmp_seq=1 ttl=64時間=0.141 ミリ秒
  4. 10.95.48.11からの64 バイト: icmp_seq=2 ttl=64時間=0.137 ミリ秒
  5.  
  6. --- 10.95.48.11 の ping 統計 ---  
  7. 送信パケット 2 個、受信パケット 2 個、パケット損失 0%、時間999 ミリ秒
  8. rtt最小/平均/最大/ mdev = 0.137/0.139/0.141/0.002 ミリ秒
  9. [root@localhost ~]# ip neighbor |grep 10.95.48.11
  10. 10.95.48.11 dev eth0 lladdr 00:0c:29:26:18:c8 到達可能

取得したMACアドレスは00:0c:29:26:18:c8です。

環境内の ESXi ホストの数が少ない場合は、SSH 経由で ESXi ホストに直接ログインし、1 つずつ検索することができます。

まず、仮想マシンのストレージディレクトリを入力します。データ ストアの名前は環境によって異なる場合があります。

  1. cd /vmfs/volumes/datastore1/

このディレクトリには、各仮想マシンの関連ファイルが格納されます。 1 つの仮想マシンは、次のように 1 つのディレクトリに対応します。

  1. [root@esxi-01:/vmfs/volumes/595b7497-d8849df8-8d7c-6c92bf585d10] ls -l
  2. 合計 176
  3. drwxr-xr-x 1 ルート ルート 420 9月14日 02:30 centos-68
  4. drwxr-xr-x 1 ルート ルート 1820 10月 9日 09:55 dev01-10.95.48.11
  5. drwxr-xr-x 1 ルート ルート 3080 9月14日 03:37 dev02-10.95.48.12

各仮想マシン ディレクトリの vmx ファイルには、仮想ネットワーク カード用にシステムによって生成された MAC アドレスが格納されます。たとえば、次のようになります。

  1. ethernet0.generatedAddress = "00:0c:29:26:18:c8"  
  2. ethernet0.generatedAddressOffset = "0"  

次のように、vmx ファイルから MAC アドレスを検索して、対応する仮想マシンを見つけることができます。

  1. [root@esxi-01:/vmfs/volumes/595b7497-d8849df8-8d7c-6c92bf585d10] を見つけます。 -名前  '*.vmx' | xargs grep '00:0c:29:26:18:c8'  
  2. ./dev01-10.95.48.11/dev01-10.95.48.11.vmx:ethernet0.generatedAddress = "00:0c:29:26:18:c8"

環境内に多数の ESXi ホストがある場合、1 つずつ検索するのは非常に非効率的です。 VMware が公式に提供している SDK に基づいてプログラムを作成し、対応する MAC アドレスを見つけることができます。

VMware は Python SDK を提供しています: https://github.com/vmware/pyvmomi

私たちが書いたプログラムは次のとおりです。

  1. #!/usr/bin/env python
  2. インポート atexit
  3.  
  4. pyVimから接続をインポート 
  5. pyVmomiからvmodlをインポート
  6. pyVmomiからvimをインポート
  7.  
  8. def print_vm_info(仮想マシン):
  9. virtual_machine.config.hardware.deviceデバイスの場合:
  10. (デバイスキー>= 4000)かつ(デバイスキー< 5000) の場合:
  11. if device.macAddress == '00:0c:29:26:18:c8' :
  12. print( 'device.macAddress==' , device.macAddress)
  13.  
  14. サマリー = 仮想マシン.サマリー
  15. print( "名前: " , summary.config.name )
  16. print( "テンプレート: " , summary.config.template)
  17. print( "パス: " , summary.config.vmPathName)
  18. print( "ゲスト: " , summary.config.guestFullName)
  19. print( "ホスト: " , summary.runtime.host.name )
  20.  
  21. main() を定義します:
  22. 試す:
  23. service_instance = connect .SmartConnect(host= "10.10.10.10" ,
  24. ユーザー= "[email protected]"
  25. パスワード= "123456"
  26. ポート=443)
  27.  
  28. atexit.register(接続.切断、service_instance)
  29.  
  30. コンテンツ = service_instance.RetrieveContent()
  31.  
  32. container = content.rootFolder #調べる開始 
  33. viewType = [vim.VirtualMachine] #検索するオブジェクトタイプ 
  34. recursive = True #再帰的調べるかどうか
  35. コンテナビュー = content.viewManager.CreateContainerView(
  36. コンテナ、viewType、再帰的)
  37.  
  38. 子 = containerView.view  
  39. 子供向け:
  40. print_vm_info(子)
  41.  
  42. vmodl.MethodFault をエラーとして除く:
  43. print( "vmodl の障害をキャッチしました: " + error.msg)
  44. -1を返す
  45.  
  46. 0を返す
  47.  
  48. # プログラムを起動
  49. __name__ == "__main__"の場合:
  50. 主要()

仮想マシンのデバイス キー値は 4000 ~ 5000 であり、ネットワーク デバイスを示します。ネットワーク デバイスのプロパティで MAC 情報を検索します。プログラム内の接続情報は、ESXi ホスト情報または vCenter 情報になります。 vCenter に直接接続することで、環境内のすべての ESXi ホストを検索でき、各ホストを 1 つずつ検索する必要がなくなります。

プログラムの実行結果は次のとおりです。

  1. [root@vagrant-centos65 サンプル]# python get_vm_from_mac.py
  2. ( 'device.macAddress==' '00:0c:29:26:18:c8' )
  3. ( '名前:' 'dev01-10.95.48.11' )
  4. ( 'テンプレート: ' False )
  5. ( 'パス: ' , '[データストア1] dev01-10.95.48.11/dev01-10.95.48.11.vmx' )
  6. ( 'ゲスト: ' 'CentOS 4/5/6/7 (64 ビット)' )
  7. ( 'ホスト: ' 、'esxi-01')

<<:  Amazon AWSは最近、4TBのメモリを搭載した仮想マシンをリリースした。

>>:  AWS、EC2とEBSの秒単位課金を発表

推薦する

Azure Functions サーバーレス コンピューティングがついに Java に対応

[51CTO.com クイック翻訳] Microsoft の Azure Functions サーバ...

NECS - KVM/月額 5.86 ドル/384 MB メモリ/20 GB ハードディスク/月間トラフィック 850 GB/英国 Rapidswitch データセンター

NECS.CO.UK は 2005 年に英国で登録された会社です。同社が提供する VPS は、英国で...

Tech Neo 11月号: コンテナプラットフォーム管理の実践

51CTO.com+プラットフォームは、オリジナルの技術コンテンツの選択と絶妙なレイアウトを通じて、...

西海岸の人気データセンター、サンノゼのVirmachのAMD VPSのレビュー

virmachの米国VPSの西海岸で人気のデータセンターはロサンゼルスかサンノゼです。最近、virm...

中央銀行がビットコインを冷やす:サードパーティアプリケーションのプロモーションが停滞する可能性

王 麗寧中国が「全国的な暗号通貨投機」を歓迎する中、「ビットコインリスク防止に関する通知」(以下、「...

インターネットの次の「金鉱」:株式市場

国内の不動産業界には、ある都市が投資する価値があるかどうかは、政府関係者やコンサルティング機関に聞く...

クリエイティブ製品の期間限定販売サイトFab.comが欧州市場で巨額の利益を上げる

クリエイティブな製品のフラッシュセールサイトであるFab.comは、ヨーロッパでの1周年を記念して、...

Mituoのコーポレートサイト構築の特徴とは?高品質なコーポレートサイトの「洋服屋」を創る

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますMituo...

ターゲット人口 2 億人、単一店舗の売上高 100 万で、ゲームのレベルアップは良いビジネスでしょうか?

2017年以来、 『Honor of Kings』は、スキンの1日売上が1億5000万、1日平均DA...

クラウドネイティブ Docker デプロイメント Flask 実践

1. Dockerの理解1. Dockerの簡単な紹介Docker はオープンソースのアプリケーシ...

Debian/Ubuntu で MySQL のルート パスワードをリセットする

MySQL パスワードをバックアップして記録するのも面倒な人が時々います。そんな人はいるのでしょうか...

百度と滴滴出行が戦う

2015年12月、滴滴出行の自動運転部門のCEOである張波氏が正式に父親になった。これは彼の人生にお...

コンテンツこそが王様です。ウェブサイトのコンテンツ戦略をどのように策定すればよいでしょうか?

場合によっては、Web サイトにリンク可能なコンテンツが不足していることがあります。これを解決するに...

検索エンジンのみに最適化し、ユーザーの検索意図を無視する

新しいサイトの最適化計画は、これまでと同じように最適化できますか? 検索エンジンのみに最適化すること...

App Store 中国、検索アルゴリズムを最適化:名前による検索を復活

8月24日、約1週間の不安が去った後、国内のiOSアプリケーション開発者はようやく落ち着きを取り戻し...