前のエントリで紹介した Nested ESXi 用の VMware Tools ですが、System Requirements には vSphere 5.x とあるにも関わらず、vSphere 5.0U3 にインストールできません。

~ # esxcli software vib install -v /tmp/esx-tools-for-esxi-9.7.1-0.0.00000.i386.vib --no-sig-check
[DependencyError]
VIB VMware_bootbank_esx-tools-for-esxi_9.7.1-0.0.00000 requires esx-base >= 5.0esx-base < 6.0, but the requirement cannot be satisfied within the imageProfile.
Please refer to the log file for more details.
~ #

requires の出力がおかしいところから察するに制約に問題があるようなので、Vib の中にある descriptor.xml の constraint 要素を編集することで回避させます。

Vib ファイルは ar 形式でアーカイブされているので、作業は適当な Linux 上で行います。

rigel:~/vib # ls
esx-tools-for-esxi-9.7.1-0.0.00000.i386.vib
rigel:~/vib # ar xv esx-tools-for-esxi-9.7.1-0.0.00000.i386.vib
x - descriptor.xml
x - sig.pkcs7
x - esx-tool
rigel:~/vib # ls
descriptor.xml esx-tools-for-esxi-9.7.1-0.0.00000.i386.vib
esx-tool sig.pkcs7
rigel:~/vib #

ar コマンドは x オプションで展開することが出来ます。Vib ファイルの中には以下の 3 つのファイルがあることが分かります。

  • descriptor.xml
    • Vib ファイルの定義ファイル。Vib の依存関係、展開されるファイル一覧、再起動の必要性、AcceptanceLevel が含まれています。
  • sig.pkcs7
    • Vib の署名ファイル。
  • esx-tool
    • Vib でインストールされるファイルを tar+gzip 形式でアーカイブしたファイルです。Vib では Payload と表現されます。

descriptor.xml の constraint 要素を見ると、5.0 <= esx-base < 6.0 であろうことは予測できます。

<vib version="5.0"><type>bootbank</type><name>esx-tools-for-esxi</name><version>9.7.1-0.0.00000</version><vendor>VMware</vendor><summary>VMware Tools for ESXi as a guest.</summary><description>VMware Tools for ESXi as a guest.</description><release-date>2014-03-27T20:19:41.259206</release-date><urls/><relationships><depends><constraint name="esx-base" relation=">=" version="5.0esx-base < 6.0"/></depends><conflicts/><replaces/><provides><provide name="tools-for-esxi" version="9.7.1"/></provides><compatibleWith/></relationships><software-tags/><system-requires><maintenance-mode>true</maintenance-mode></system-requires><file-list><file>etc/init.d/vmtoolsd</file><file>etc/pam.d/vmtoolsd</file><file>etc/vmware-tools/plugins/common/libhgfsServer.so</file><file>etc/vmware-tools/plugins/common/libvix.so</file><file>etc/vmware-tools/plugins/vmsvc/libguestInfo.so</file><file>etc/vmware-tools/plugins/vmsvc/libpowerOps.so</file><file>etc/vmware-tools/plugins/vmusr/libhgfsUsability.so</file><file>etc/vmware-tools/poweroff-vm-default</file><file>etc/vmware-tools/poweron-vm-default</file><file>etc/vmware-tools/resume-vm-default</file><file>etc/vmware-tools/scripts/vmware/network</file><file>etc/vmware-tools/statechange.subr</file><file>etc/vmware-tools/suspend-vm-default</file><file>lib/libgmodule-2.0.so.0</file><file>lib/libgobject-2.0.so.0</file><file>lib/libhgfs.so</file><file>lib/libvmtools.so</file><file>sbin/vmtoolsd</file></file-list><acceptance-level>certified</acceptance-level><live-install-allowed>false</live-install-allowed><live-remove-allowed>false</live-remove-allowed><cimom-restart>false</cimom-restart><stateless-ready>true</stateless-ready><overlay>true</overlay><payloads><payload name="esx-tool" type="vgz" size="1842084"><checksum checksum-type="sha-256">26cf3f6447a2f24adb3e3bcb66fdbeacc9d157228b50b3983ed7a194c3b023a8</checksum><checksum checksum-type="sha-1" verify-process="gunzip">ecd5ebbbd66b500e8797a083502881390e9e0ae2</checksum></payload></payloads></vib>

が、その記述は特に公開されていないので、ここでは constraint 要素から relation 属性と version 属性を削除することで対応します。

rigel:~/vib # vi descriptor.xml
rigel:~/vib # cat desciptor.xml
<vib version="5.0"><type>bootbank</type><name>esx-tools-for-esxi</name><version>9.7.1-0.0.00000</version><vendor>VMware</vendor><summary>VMware Tools for ESXi as a guest.</summary><description>VMware Tools for ESXi as a guest.</description><release-date>2014-03-27T20:19:41.259206</release-date><urls/><relationships><depends><constraint name="esx-base"/></depends><conflicts/><replaces/><provides><provide name="tools-for-esxi" version="9.7.1"/></provides><compatibleWith/></relationships><software-tags/><system-requires><maintenance-mode>true</maintenance-mode></system-requires><file-list><file>etc/init.d/vmtoolsd</file><file>etc/pam.d/vmtoolsd</file><file>etc/vmware-tools/plugins/common/libhgfsServer.so</file><file>etc/vmware-tools/plugins/common/libvix.so</file><file>etc/vmware-tools/plugins/vmsvc/libguestInfo.so</file><file>etc/vmware-tools/plugins/vmsvc/libpowerOps.so</file><file>etc/vmware-tools/plugins/vmusr/libhgfsUsability.so</file><file>etc/vmware-tools/poweroff-vm-default</file><file>etc/vmware-tools/poweron-vm-default</file><file>etc/vmware-tools/resume-vm-default</file><file>etc/vmware-tools/scripts/vmware/network</file><file>etc/vmware-tools/statechange.subr</file><file>etc/vmware-tools/suspend-vm-default</file><file>lib/libgmodule-2.0.so.0</file><file>lib/libgobject-2.0.so.0</file><file>lib/libhgfs.so</file><file>lib/libvmtools.so</file><file>sbin/vmtoolsd</file></file-list><acceptance-level>certified</acceptance-level><live-install-allowed>false</live-install-allowed><live-remove-allowed>false</live-remove-allowed><cimom-restart>false</cimom-restart><stateless-ready>true</stateless-ready><overlay>true</overlay><payloads><payload name="esx-tool" type="vgz" size="1842084"><checksum checksum-type="sha-256">26cf3f6447a2f24adb3e3bcb66fdbeacc9d157228b50b3983ed7a194c3b023a8</checksum><checksum checksum-type="sha-1" verify-process="gunzip">ecd5ebbbd66b500e8797a083502881390e9e0ae2</checksum></payload></payloads></vib>
rigel:~/vib #

descriptor.xml を編集した後に、ar コマンドで再度 Vib にアーカイブします。このときアーカイブするファイルの順序に気をつけます。esx-tools-for-esxi の Vib ファイルは descriptor.xml, sig.pkcs7, esx-tool の順番でアーカイブされています。この順序が異なっている場合、Vib インストール時に期待されているファイルがない警告されてしまいます。

rigel:~/vib # ar rv esx-tools-for-esxi-9.7.1-0.0.00000.i386.2.vib descriptor.xml sig.pkcs7 esx-tool
ar: creating esx-tools-for-esxi-9.7.1-0.0.00000.i386.2.vib
a - descriptor.xml
a - sig.pkcs7
a - esx-tool
rigel:~/vib #

新しく作成した Vib ファイルを ESXi 上にコピーし esxcli software vib install コマンドでインストールします。

~ # esxcli software vib install -v /tmp/esx-tools-for-esxi-9.7.1-0.0.00000.i386.2.vib --no-sig-check
Installation Result
Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
Reboot Required: true
VIBs Installed: VMware_bootbank_esx-tools-for-esxi_9.7.1-0.0.00000
VIBs Removed:
VIBs Skipped:
~ #

まとめ

  • 少なくとも vSphere 5.0U3 では esx-tools-for-esxi の Vib ファイルをそのままインストールできない
  • Vib ファイルは ar 形式でアーカイブされている
  • Vib ファイルの依存関係は descriptor.xml に記述されている
  • descriptor.xml の constraint 要素を編集することで依存関係を変更可能