vHoge

VMwareのアレコレ備忘録。CLIでがんばるネタ多め。

Appendix of Getting VM IP on ESXi

昨日の記事VM Meetup Tokyo #1 で行った LT について
時間的制約により省いた話やあまりにどうしようもない与太話(と訂正)

open-vm-tools での IP 取得の話 (訂正)

スライド中では getifaddrs() のみしか書いてなかったですが、
もう1個 libdnet 経由の intf_open() から取得する方法があります。
この切り替えはソースのビルドオプションによって異なっており、
最新の rpm/deb だと libdnet 経由で取得する方法が正しいみたいです。
コード的にはこのファイル

思い切り読み違えていました… orz
あの後コード追っかけてて見つけたよ…C 言語難しい…

続足りない IP

1NIC に 128IP 割り当てても 103 までしか渡っていないという話はありましたが、
同じように 複数 IP つけた NIC を増やせば NIC 数 × 103 で増えていくかというとそうでもない。
MOB で見てみると
先頭 NIC
先頭 NIC は複数 IP ついているが…

2個目以降
2個目以降の NIC は先頭の 1IP アドレスしか渡ってこない…

MAX?
1NIC x 103IP + 15NIC x 1IP = 118 IP が MAX?
IPv6 はそのうちにでも…

vmomi で VMware Tools の IP を取得する

pyvmomi で言うと以下。

# * は適当なシーケンス番号
# Primary IP
SI.content.rootFolder.childEntity[*].vmFolder.childEntity[*].guest.ipAddress
# IP List
SI.content.rootFolder.childEntity[*].vmFolder.childEntity[*].guest.net[*].ipAddress

ManagedObjectReference:VirtualMachine の下にあるので、適時読み替えれば hostFolder からも辿れるかと。

Primary IP は tools.conf で指定できる Primary NIC の IP アドレスで、特に指定していなければ IP List の先頭の NIC の IP アドレスのはず。
IP List の方は = vSphere Web Client とかで見えるアレ(hover すると見えるやつ)
以前、Primary NIC と IP List の先頭とが異なるケースを見たことあるが再現しない…
古い Ver. だったからかな?

vmomi で esxcli を叩く話

*vmomi で ESXi の esxcli 叩ける…と思ったら、どうも言語間で仕様差があるらしく、
rbvmomi/govmomi では実装されているが、pyvmomi では実装されていないらしい。
経緯としては giuhub の issues に。
Add support for Support for esxcli like the Ruby bindings · Issue #34 · vmware/pyvmomi · GitHub
VMware 内部で自動生成されたコードの仕様が不明なので VMware にアシストして欲しいが、諸般の事情により仕様公開は止められているというように見える。
果たして…

とりあえず pyvmomi 単独で esxcli を叩くことはできず、
該当 issue の最下部に書いてある wrapper を噛ますと叩けるようになるらしい(未検証)

同じに見えてこんなところに言語間仕様差が。