vCenter 管理下の場合、VM の PowerON は vCenter から行うのがセオリー。
が、別に ESXi から行っても一見大した違いはなさそうですが、 OVF Environment(vApp オプション)取得周りの挙動で違いがあります。
検証 VM
Photon の OVA を vCenter にデプロイ。
VM の設定から vApp オプションを選び、適当なプロパティを作成する。
それと OVF 設定で OVF 環境の転送を VMware Tools にしておく。
この状態で vCenter から VM を起動。
VM の中で vmtoolsd --cmd 'info-get guestinfo.ovfEnv'
をたたくとさきほどの vApp オプションを含む XML を取得できる。
root@photon-machine [ ~ ]# vmtoolsd --cmd 'info-get guestinfo.ovfEnv' <?xml version="1.0" encoding="UTF-8"?> <Environment xmlns="http://schemas.dmtf.org/ovf/environment/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oe="http://schemas.dmtf.org/ovf/environment/1" xmlns:ve="http://www.vmware.com/schema/ovfenv" oe:id="" ve:vCenterId="vm-2925"> <PlatformSection> <Kind>VMware ESXi</Kind> <Version>6.7.0</Version> <Vendor>VMware, Inc.</Vendor> <Locale>en</Locale> </PlatformSection> <PropertySection> <Property oe:key="key1" oe:value="test"/> </PropertySection> <ve:EthernetAdapterSection> <ve:Adapter ve:mac="00:50:56:a7:94:d9" ve:network="VM Network" ve:unitNumber="7"/> </ve:EthernetAdapterSection>
ESXi からパワーオン
この VM を ESXi 上の host-client から起動して、vmtoolsd をたたいてみると。
root@photon-machine [ ~ ]# vmtoolsd --cmd 'info-get guestinfo.ovfEnv' No value found
となり、値が取得できなくなる。
ちなみにこの状態、VM 内からの reboot や vCenter からのリセットでは解消せず、vCenter からパワーオンしてやると値が取得できるようになる。
考察
OVF Env として値の設定は以下の2パターンがあるらしい。
* vmx ファイルに書き出し
* VM プロセス(vmm?)上のメモリ
で、
確認した限り vApp オプション設定や OVF インポートで設定した値は vmx ファイルに記載されているケースは観測されなかったので、おそらく vmm プロセス辺りの起動時に引数として渡している感じなのかと。
ESXi 上のファイルをざっと確認する限りでも、それっぽい値を書き出しているファイルも見当たらず。
ただ、メモリ上のみだと揮発性なので、プロセス終了と共に消えてしまう。
なので、おそらく vCenter の DB(vPostgres)に保持させてあり、vCenter から起動する場合はそれに合わせて DB から値を引いて、ESXi に起動を投げているのではないかと。
ESXi の hostd か vpxa あたりのログを追っかければ出てないかなぁ。
実影響?
OVF Env が利用されるケースとしては、VM の初回起動時に設定を流し込むケースが多いので、vApp オプションを使っている VM を ESXi から直起動とかするとダメそう…
に見えるが、実際は初回起動時に OVF Env を読み込んで設定ファイルに書き出し、2回目以降の起動は書き出した設定の内容を使うので OVF Env は利用しないというケースがほとんどかと。
なので、vApp オプションを使っている VM の初回起動を ESXi からやるとダメというかなり限定的なケースになりそう。
その他の ESXi で VM を直起動した場合の差異
募集中。何かあるのかな?