セキュリティ的な脆弱性が発表されたら、即座に適用したいところですが、パッチ適用って実はリスクがあるんですよね。。。


ちょうど、ESXi5.x、6.xでパッチ適用後にエラーがでるというKBを発見したのでシェアします。


情報は公式サイトです。
ESXi ホストへのパッチ適用後の「esxupdate エラー コード 15」エラー (2148139)
 

本KBは以下のような事象が発生します。

●vSphere Update Manager を使用して拡張機能、パッチ、または互換性のない VIB を ESXi ホストにインストールしているとき、操作が次のエラーで失敗する。

esxupdate error code 15

●次のエラーが表示される。
DEBUG: Creating an empty ImageProfile for bootbank /bootbank

●/var/log/esxupdate.log ファイルに、次のようなエントリが記録される。

esxupdate: esxupdate: ERROR: An esxupdate error exception was caught:
esxupdate: esxupdate: ERROR: Traceback (most recent call last):
esxupdate: esxupdate: ERROR: File "/usr/sbin/esxupdate", line 216, in main
esxupdate: esxupdate: ERROR: cmd.Run()
esxupdate: esxupdate: ERROR: File "/build/mts/release/bora-469512/bora/build/esx/release/python-2.6-lib-zip-stage/469512/visor/pylib/python2.6/site-packages/vmware/esx5update/Cmdline.py", line 144, in Run
esxupdate: esxupdate: ERROR: File "/build/mts/release/bora-469512/bora/build/esx/release/python-2.6-lib-zip-stage/469512/visor/pylib/python2.6/site-packages/vmware/esximage/Transaction.py", line 218, in InstallVibsFromSources
esxupdate: esxupdate: ERROR: File "/build/mts/release/bora-469512/bora/build/esx/release/python-2.6-lib-zip-stage/469512/visor/pylib/python2.6/site-packages/vmware/esximage/Transaction.py", line 122, in GetProfile
esxupdate: esxupdate: ERROR: InstallationError: (None, 'No image profile is found on the host or image profile is empty. An image profile is required to install or remove VIBs. To install an image profile, use the esxcli image profile install command.')


そして、、、対処法が意外と大変です。

【解決方法】
この問題を回避するには、ESXi ホストを再インストールするか、imgdb.tgz ファイルを正常に動作している別のホストからコピーします。


再インストール!これはちょっと大変です。台数が多かったらとんでもない工数がかかりますよね。再インストールしたらホストプロファイルが使えないと聞いた事もありますし。

解決手順

KBによると、この問題を回避するには、次のいずれかの方法を使用する必要があります。
 
①ESXi ホストを再インストールします。
②imgdb.tgz ファイルを正常に動作している別の ESXi ホストからコピーします。


多くの場合は、②の対応をすることになると思います。また、文言的に、 「imgdb.tgz ファイルを正常に動作している別の ESXi ホストからコピーします」とあるので、あくまでファイルが破損したESXiで発生するのではないかと思います。
 

imgdb.tgz ファイルを ESXi ホストからコピーするには: 
①正常に動作している ESXi ホストで、次のコマンドを実行して imgdb.tgz ファイルをコピーします。
cp /bootbank/imgdb.tgz /vmfs/volumes/shared-LUN

②破損したホストで、imgdb.tgz ファイルを /tmp by running this command に移動します。
cp /vmfs/volumes/shared_LUN/imgdb.tgz /tmp
cd /tmp
tar -xzf imgdb.tgz

③次のコマンドを実行して、プロファイル ファイルをプロファイル ディレクトリにコピーします。
cp /tmp/var/db/esximg/profiles/* /var/db/esximg/profiles/

④次のコマンドを実行して、VIB を VIB リポジトリにコピーします。
cp /tmp/var/db/esximg/vibs/* /var/db/esximg/vibs/

⑤次のコマンドを実行して、破損した imgdb.tgz を起動バンクから削除します。
rm /bootbank/imgdb.tgz

⑥次のコマンドを実行して、正しい imgdb.tgz ファイルを起動バンクに移動します。
cp /tmp/imgdb.tgz /bootbank/

⑦次のコマンドを実行して、構成変更をバックアップします。
/sbin/auto-backup.sh

⑧ESXi ホストを再起動する。
vSphere Update Manager を使用して、ホストのインストールまたはパッチ適用を再度行います。