vHoge

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

ESXi ホスト上の VMware Tools を更新する

Windows 仮想マシンに vSphere Client から VMware Tools インストールを行う。

仮想マシンを選んで右クリックメニューから
インストール CD をマウント
ゲスト OS にて CD がマウントされているので
インストーラ実行してインストール
インストール完了し実行中に

この VMware Tools…最新版をインストールできないですか?

ところでインストールしたはいいが、VMware Tools のバージョン…

11365...?
11.3.5 ですねぇ
最新は 12.2.5 (2023/8/14 現在)が出ている中、せっかくインストールするのであれば最新版をインストールしておきたいところだが、デフォルトでインストールされる VMware Tools のバージョンは ESXi のバージョンに紐づいて提供されている。

インストールされるバージョンは下記を参照。
https://packages.vmware.com/tools/versions
(ESXi のバージョンが p0x 表記なので、buildnumber から追っかける必要あり…)

今回の環境は ESXi 7.0 U3d。

[root@hm90a:~] vmware -v
VMware ESXi 7.0.3 build-19482537

セキュリティ fix などもあるので、せっかくインストールするのであれば新しいバージョンにしておきたいですねぇ…

ESXi ホスト上の VMware Tools を更新する

そんなあなたに KB がございます。
kb.vmware.com
更新してみる。

1. VMware Tools のリポジトリディレクトリを作成

ESXi が見えるどこか(Datastore 上)にリポジトリディレクトリを作成

[root@hm90a:~] mkdir /vmfs/volumes/hm90a.satassd/vmtools-repo

2. VMware Tools パッケージをダウンロード

Customer Connect から "VMware Tools packages for Windows" をダウンロードし、ESXi 上にもっていく。

zip/gz はお好きな方で

3. リポジトリディレクトリ上にファイルを展開

ダウンロードしたパッケージファイルをリポジトリディレクトリ上に展開。

[root@hm90a:~] cd /vmfs/volumes/hm90a.satassd/vmtools-repo
[root@hm90a:/vmfs/volumes/629321cd-adc6180f-7672-1c8341299fe7/vmtools-repo] unzip VMware-Tools-windows-12.2.5-21855600.zip
Archive:  VMware-Tools-windows-12.2.5-21855600.zip
   creating: floppies/
  inflating: floppies/pvscsi-Windows8.flp
   creating: vmtools/
  inflating: vmtools/windows_avr_manifest.txt.sig
  inflating: vmtools/windows.iso
l  inflating: vmtools/buildNumber.txt
  inflating: vmtools/version.txt
  inflating: vmtools/windows_avr_manifest.txt
  inflating: vmtools/isoimages_manifest.txt
  inflating: vmtools/windows.iso.sha
  inflating: vmtools/isoimages_manifest.txt.sig
  inflating: vmtools/windows.iso.sig

# zip は要らないので消しておく
[root@hm90a:/vmfs/volumes/629321cd-adc6180f-7672-1c8341299fe7/vmtools-repo] rm VMware-Tools-windows-12.2.5-21855600.zip
rm: remove 'VMware-Tools-windows-12.2.5-21855600.zip'? y
[root@hm90a:/vmfs/volumes/629321cd-adc6180f-7672-1c8341299fe7/vmtools-repo] ls
floppies  vmtools

# 権限変更
[root@hm90a:~] chmod 700 -R /vmfs/volumes/hm90a.satassd/vmtools-repo/*

4. 詳細パラメータを変更

作成したリポジトリディレクトリを参照するよう、詳細パラメータを追加する。
(デフォルトでは存在しないパラメータ)

[root@hm90a:~] esxcli system settings advanced set -o /UserVars/ProductLockerLocation -s  /vmfs/volumes/hm90a.satassd/vmtools-repo/

確認してみる。

[root@hm90a:~] esxcli system settings advanced list | grep -A 10 /UserVars/ProductLockerLocation
   Path: /UserVars/ProductLockerLocation
   Type: string
   Int Value: 0
   Default Int Value: 0
   Min Value: 0
   Max Value: 0
   String Value: /vmfs/volumes/hm90a.satassd/vmtools-repo/
   Default String Value: /locker/packages/vmtoolsRepo/
   Valid Characters: *
   Description: Path to VMware Tools repository

これで、ESXi ホスト再起動すると反映されるが、再起動は何かと面倒なので、このままオンライン状態での設定反映方法があるのでそちらを実行する。
ESXi のバージョン間で違いがあるが、6.7U1 以降は同じ方法なので本文中はこちらで。

5. MOB で 該当 ESXi ホストを開く

MOB(Managed Object Browser https://[vCenter IP or FQDN]/mob/) で該当 ESXi ホストの updateProductLockerLocation メソッドを開く。
https://[vCenter IP or FQDN]/mob/?moid=[ESXi ホストの moid]&method=updateProductLockerLocation moid の確認方法は割愛。vSphere Client で取得できます。

6. パスを指定して Invoke

開いたページにて、path 欄にさきほどのディレクトリパスを入力し、Invoke Method リンクをクリックする。 Invoke Method が実行されると下の方に Method Invocation Reulst が表示される。 実行できれば多分問題無いが、メソッド実行結果が気になるなら task → Info とリンクを辿っていくと結果が確認可能。

更新手順としては、これで完了。

再度 VMware Tools インストールを試してみる

適当な Windows 仮想マシンに再度 vSphere Clinet から VMware Tools インストールを試してみると

バージョンが 12.2.5 に

さきほどインストールした仮想マシンでもアップグレードが選択可能に。
インストール/アップグレード後は vSphere Client からもダウンロードしたバージョンで実行中に見える。

Appendix : この状態で Linux 仮想マシンはどうなるのか?

※ 最近の Linux 系は Open VM Tools 推奨なので、vSphere Client から追加すること無いと思いますが…
さきほどダウンロードしたパッケージ、Windows 用で Linux 用イメージは含んでいない。

解凍した Windows パッケージ

[root@hm90a:~] ls -l /vmfs/volumes/hm90a.satassd/vmtools-repo/*
/vmfs/volumes/hm90a.satassd/vmtools-repo/floppies:
total 1024
-rwx------    1 root     root        140288 Aug 14 08:52 pvscsi-Windows8.flp

/vmfs/volumes/hm90a.satassd/vmtools-repo/vmtools:
total 130112
-rwx------    1 root     root             8 Aug 14 08:53 buildNumber.txt
-rwx------    1 root     root          5895 Aug 14 08:53 isoimages_manifest.txt
-rwx------    1 root     root          3378 Aug 14 08:53 isoimages_manifest.txt.sig
-rwx------    1 root     root             6 Aug 14 08:53 version.txt
-rwx------    1 root     root     130775040 Aug 14 08:53 windows.iso
-rwx------    1 root     root       2043872 Aug 14 08:53 windows.iso.sha
-rwx------    1 root     root          3378 Aug 14 08:53 windows.iso.sig
-rwx------    1 root     root          1669 Aug 14 08:53 windows_avr_manifest.txt
-rwx------    1 root     root          3378 Aug 14 08:52 windows_avr_manifest.txt.sig

もともとのリポジトリディレクト

[root@hm90a:~] ls -l /locker/packages/vmtoolsRepo/*
/locker/packages/vmtoolsRepo/floppies:
total 3072
-rw-r--r--    1 root     root        165376 May  8  2022 pvscsi-Windows2008.flp
-rw-r--r--    1 root     root        174080 May  8  2022 pvscsi-Windows8.flp
-rw-r--r--    1 root     root        165376 May  8  2022 pvscsi-WindowsVista.flp

/locker/packages/vmtoolsRepo/vmtools:
total 203840
-rw-r--r--    1 root     root          5634 May  8  2022 isoimages_manifest.txt
-rw-r--r--    1 root     root          3378 May  8  2022 isoimages_manifest.txt.sig
-rw-r--r--    1 root     root      56051712 May  8  2022 linux.iso
-rw-r--r--    1 root     root        876320 May  8  2022 linux.iso.sha
-rw-r--r--    1 root     root          3378 May  8  2022 linux.iso.sig
-rw-r--r--    1 root     root          1989 May  8  2022 linux_avr_manifest.txt
-rw-r--r--    1 root     root          3378 May  8  2022 linux_avr_manifest.txt.sig
-rw-r--r--    1 root     root     147435520 May  8  2022 windows.iso
-rw-r--r--    1 root     root       2304192 May  8  2022 windows.iso.sha
-rw-r--r--    1 root     root          3378 May  8  2022 windows.iso.sig
-rw-r--r--    1 root     root          1669 May  8  2022 windows_avr_manifest.txt
-rw-r--r--    1 root     root          3378 May  8  2022 windows_avr_manifest.txt.sig

linux.iso 系が無い。この状態で Linux 仮想マシンでマウントさせてみる。

Ubuntu 20.04 LTS 環境にて。 Open VM Tools がインストールされている

mirie@ubuntu2004a:~$ dpkg --list | grep open-vm-tools
ii  open-vm-tools                         2:11.3.0-2ubuntu0~ubuntu20.04.3   amd64        Open VMware Tools for virtual machines hosted on VMware (CLI)

実行中だと vSphere Client でインストールが選べないので、Open VM Tools を止める。

mirie@ubuntu2004a:~$ sudo systemctl stop vmtoolsd

インストールを試してみるとエラーが…
Linux 系は Open VM Tools 推奨で、VMware Tools としての更新はしていないのでココから実行する意味は無いですが、気にる方は元のリポジトリから linux 系のファイルだけコピーしておくと一応エラーは起こらなくなる。

[root@hm90a:~] cp -r /locker/packages/vmtoolsRepo/vmtools/linux* /vmfs/volumes/hm90a.satassd/vmtools-repo/vmtools/

vSphere Client にてインストール選択後の Linux 仮想マシン

mirie@ubuntu2004a:~$ sudo mount -t iso9660 /dev/cdrom  /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
mirie@ubuntu2004a:~$ ls -l /mnt/
total 54385
-r-xr-xr-x 1 root root     1933 Oct 14  2020 manifest.txt
-r-xr-xr-x 1 root root     4943 Oct 14  2020 run_upgrader.sh
-r--r--r-- 1 root root 53834249 Oct 14  2020 VMwareTools-10.3.23-17030940.tar.gz
-r-xr-xr-x 1 root root   917188 Oct 14  2020 vmware-tools-upgrader-32
-r-xr-xr-x 1 root root   930632 Oct 14  2020 vmware-tools-upgrader-64

当然古いバージョンのままですが…

ESXi 単位の設定なので、ESXi 毎にファイル配置とパラメータ設定が必要です。
ファイルは共有データストアに配置、パラメータ設定や mob 実行はスクリプトを駆使すれば一括でできそう…かな?