vHoge

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

vCenter 管理下の VM を ESXi 上で直起動

vCenter 管理下の場合、VM の PowerON は vCenter から行うのがセオリー。
が、別に ESXi から行っても一見大した違いはなさそうですが、 OVF Environment(vApp オプション)取得周りの挙動で違いがあります。

検証 VM

PhotonOVA を vCenter にデプロイ。
VM の設定から vApp オプションを選び、適当なプロパティを作成する。
vApp オプション
それと OVF 設定で OVF 環境の転送を VMware Tools にしておく。
VMwareTools での取得

この状態で 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 をたたいてみると。
host client から起動

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 を直起動した場合の差異

募集中。何かあるのかな?