2018年7月17日火曜日

ESXi 6.7に同梱されているVMware Tools 10.2.0に不具合があるので、10.2.5に入れ替えた件

ESXi 6.7に同梱されているVMware Toolsは、バージョン 10.2.0となるが、以下KBに不具合情報が掲載されており、利用が非推奨となっている。

Ports are exhausted on Guest VM after a few days when using VMware Tools 10.2.0 (54459)
https://kb.vmware.com/s/article/54459

どうやら、VMware Toolsがサーバーのポートを食いつぶし、最終的に仮想マシンが通信ができなくなるという、なかなか影響の大きい不具合のようだ。

解決策は、
  1. VMware Toolsのバージョンアップ
  2. 「VMware CAF Management Agent service」の停止
のどちらかとなるが、今回「1」の対応を行うことにした。

VMware Tools 10.2.5はダウロードできる最新が10.2.5のようなので、そちらを利用する。リリースノートにも今回の不具合修正の記載があるので、引用しておく。

VMware Tools 10.2.5 リリース ノート
https://docs.vmware.com/jp/VMware-Tools/10.2/rn/vmware-tools-1025-release-notes.html#resolvedissues
・VMware Tools 10.2.0 を使用した後に、ゲスト仮想マシンのポートが枯渇する
VMware Tools 10.2.0 を使用した後に、ゲスト仮想マシンのポートが枯渇するその結果、ネットワーク接続の障害が発生します。
今回のリリースで、この問題は解決されています。

変更手順

それではESXi 6.7のVMware Tools入れ替え手順を記載していこう。

1. VMware Tools 10.2.5をダウンロード

以下URLからVMware Toolsをダウンロードする。

ダウンロード VMware Tools 10.2.5
https://my.vmware.com/jp/web/vmware/details?downloadGroup=VMTOOLS1025&productId=352

ダウンロードは一番上のzip圧縮版を選んでおけば問題ない。なお、ダウンロードにはMy VMwareのアカウントが必要なので注意。



問題なければ、以下ファイルがダウンロードできるはずだ。

VMware-Tools-core-10.2.5-8068406.zip


2. ファイルをアップロード

データストアブラウザなどを使って、ダウンロードしたzipをアップロードする。今回は、ssd_local_01という名前のデータストア直下にアップロードした。

3. zipファイルを展開

ここからはESXiにsshで接続しての作業となる。

vmtoolsというディレクトリを作成し、その中にunzipコマンドでVMware Toolsのファイルを解凍する。

[root@t3011esxi:~] mkdir /vmfs/volumes/ssd_local_01/vmtools
[root@t3011esxi:~] unzip /vmfs/volumes/ssd_local_01/VMware-Tools-core-10.2.5-8068406.zip -d /vmfs/volumes/ssd_local_01/vmtools/
------------------------------
Archive:  /vmfs/volumes/ssd_local_01/VMware-Tools-core-10.2.5-8068406.zip
   creating: floppies/
  inflating: floppies/pvscsi-Windows2008.flp
  inflating: floppies/pvscsi-Windows8.flp
  inflating: floppies/pvscsi-WindowsVista.flp
   creating: vmtools/
  inflating: vmtools/buildNumber.txt
  inflating: vmtools/linux.iso.sig
  inflating: vmtools/windows.iso
  inflating: vmtools/isoimages_manifest.txt.sig
  inflating: vmtools/linux_avr_manifest.txt
  inflating: vmtools/linux.iso
  inflating: vmtools/windows_avr_manifest.txt
  inflating: vmtools/windows.iso.sha
  inflating: vmtools/windows_avr_manifest.txt.sig
  inflating: vmtools/linux_avr_manifest.txt.sig
  inflating: vmtools/windows.iso.sig
  inflating: vmtools/isoimages_manifest.txt
  inflating: vmtools/linux.iso.sha
  inflating: vmtools/version.txt
------------------------------

解凍に成功すると、floppiesとvmtoolsという2つのディレクトリが作成されるはずだ。

[root@t3011esxi:~] ls -l /vmfs/volumes/ssd_local_01/vmtools/
------------------------------
drwxr-xr-x    1 root     root           700 Jul 14 13:16 floppies
drwxr-xr-x    1 root     root          2240 Jul 14 13:16 vmtools
------------------------------

4. 旧VMware Toolsファイルをバックアップ

ESXiが参照するVMware Toolsのファイルは、/vmimages配下となる。

[root@t3011esxi:~] ls -l /vmimages/
------------------------------
lrwxrwxrwx   1 root root  23 Apr  3 21:31 floppies -> /productLocker/floppies
lrwxrwxrwx   1 root root  22 Apr  3 21:31 tools-isoimages -> /productLocker/vmtools
------------------------------

/vmimages配下にはfloppiesとtools-isoimagesという2つのシンボリックリンクがあり、実態は/productLockerにあることがわかる。したがって、/productLockerのファイルを先ほど展開したzipファイルで上書きすればよい。

[root@t3011esxi:~] ls -l /productLocker/
------------------------------
drwxr-xr-x    1 root     root             8 May 25 20:50 floppies
drwxr-xr-x    1 root     root             8 Jul 13 22:01 vmtools
------------------------------

とはいえ、上書きすると消えてしまうため、念のため旧ファイルのバックアップは取得しておくことを推奨する。今回はtarで固めて、tools-isoimages_bck.tar.gzという名前でデータストア保存した。

[root@t3011esxi:~] cd /productLocker/
[root@t3011esxi:/vmfs/volumes/5b087705-8ff61c5b-8856-80ee73b761f0/packages/vmtoolsRepo] tar zcvf /vmfs/volumes/ssd_local_01/tools-isoimages_bck.tar.gz .
------------------------------
./
./linux.iso.sha
./linux.iso
./linux_avr_manifest.txt
./winPreVista.iso.sha
./windows.iso
./linux.iso.sig
./isoimages_manifest.txt.sig
./winPreVista_avr_manifest.txt
./winPreVista.iso
./winPreVista_avr_manifest.txt.sig
./linux_avr_manifest.txt.sig
./isoimages_manifest.txt
./winPreVista.iso.sig
./windows_avr_manifest.txt.sig
./windows_avr_manifest.txt
./windows.iso.sig
./windows.iso.sha
------------------------------

5. ファイルをコピーして上書き

cpコマンドで上書きを実施してしまうのが、最も簡単。ただし、上書き確認はされない(-iオプションを入れても確認されない)ので注意すること。

[root@t3011esxi:~] cp -r /vmfs/volumes/ssd_local_01/vmtools/* /productLocker/

コピー後確認をしてみる。日付が更新されているものが上書きされたファイルとなる。

[root@t3011esxi:~] ls -l /productLocker/*
------------------------------
/productLocker/floppies:
total 746
-rwx------    1 root     root        120320 Apr  3 21:50 pvscsi-Windows2003.flp
-rwx------    1 root     root        160256 Jul 14 13:31 pvscsi-Windows2008.flp
-rwx------    1 root     root        163328 Jul 14 13:31 pvscsi-Windows8.flp
-rwx------    1 root     root        160256 Jul 14 13:31 pvscsi-WindowsVista.flp
-rwx------    1 root     root        116736 Apr  3 21:50 pvscsi-WindowsXP.flp
-rwx------    1 root     root         42496 Apr  3 21:50 vmscsi.flp

/productLocker/vmtools:
total 212759
-rwx------    1 root     root             7 Jul 14 13:31 buildNumber.txt
-rwx------    1 root     root          5175 Jul 14 13:31 isoimages_manifest.txt
-rwx------    1 root     root          2122 Jul 14 13:31 isoimages_manifest.txt.sig
-rwx------    1 root     root      57456640 Jul 14 13:31 linux.iso
-rwx------    1 root     root        898272 Jul 14 13:31 linux.iso.sha
-rwx------    1 root     root          2122 Jul 14 13:31 linux.iso.sig
-rwx------    1 root     root          1989 Jul 14 13:31 linux_avr_manifest.txt
-rwx------    1 root     root          2122 Jul 14 13:31 linux_avr_manifest.txt.sig
-rwx------    1 root     root             6 Jul 14 13:31 version.txt
-rwx------    1 root     root      71991296 Apr  3 21:50 winPreVista.iso
-rwx------    1 root     root       1125376 Apr  3 21:50 winPreVista.iso.sha
-rwx------    1 root     root          2122 Apr  3 21:50 winPreVista.iso.sig
-rwx------    1 root     root          1709 Apr  3 21:50 winPreVista_avr_manifest.txt
-rwx------    1 root     root          2122 Apr  3 21:50 winPreVista_avr_manifest.txt.sig
-rwx------    1 root     root      85032960 Jul 14 13:31 windows.iso
-rwx------    1 root     root       1329152 Jul 14 13:31 windows.iso.sha
-rwx------    1 root     root          2122 Jul 14 13:31 windows.iso.sig
-rwx------    1 root     root          1709 Jul 14 13:31 windows_avr_manifest.txt
-rwx------    1 root     root          2122 Jul 14 13:31 windows_avr_manifest.txt.sig
------------------------------

これでVMware Toolsの置き換えは完了となる。ESXiの再起動等は不要で反映されるようだ。

6. 仮想マシンのVMware Toolsをアップグレード

試しに、Windows Server 2008 R2の仮想マシンのVMware Toolsをアップグレードをしてみることにする。操作は、VMware Host Clientにて行う。

仮想マシンの画面を開くと、ESXi上のVMware Toolsのファイルを置き換えたことによって、新しいバージョンのVMware Toolsが利用可能である旨が表示されるようになっている。


仮想マシンの「アクション」→「ゲストOS」→「VMware Toolsのアップグレード」を選択すると、自動でアップグレードされる。

ただし、仮想マシンの種類によってはOS再起動も自動で実施されるので注意する。私の環境ではWindows Server 2008 R2では再起動がされたが、Windows Server 2016では再起動されなかった。


再起動が完了すると、ESXiからも10.2.5でバージョンを認識した。


以上でESXi上のVMware Toolsファイルの置き換え手順は完了となる。

今後ESXi 6.7のパッチ等でVMware Toolsの不具合は修正されるとは思うが、それまでは本手順を参考に新しいバージョンに入れ替えるか、バージョン 10.2.0を利用しないように注意しよう。

参考

ESX/ESXi ホスト上の VMware Tools の ISO イメージが壊れているかどうかを判別する (1004820)
https://kb.vmware.com/s/article/1004820?lang=ja

2018年7月9日月曜日

ESXi Shellのコマンドを使って仮想マシンのパワーオン・パワーオフを行う方法

VMware Host Clientにログインできないが、ESXiのコンソールにはログインできる状況(たとえば、データセンターやマシンルームでの作業)において、仮想マシンのパワーオン・パワーオフを実施したいことが稀にある。

今回はそのような状況を想定して、ESXiのコンソールから仮想マシンを操作する手順について記載する。

ESXi Shellにログインできるようにする

ESXiのコンソール画面は、通常以下のようなグレーと黄色の表示となっているはずである(時間が経つと黒い画面になる)。


「Alt + F1」を押すと、ESXi Shellモードになる。しかし、以下の通り、ログインプロンプトが表示されない。


これは、ESXi Shellが無効化されていることが原因となるため、一度「Alt + F2」キーでESXi Shellから戻り、「F2」キーを押して設定画面にログインする。


設定画面にて、「Troubleshooting Options」を選択する。


「Enable ESXi Shell」を選択する。


ESXi Shellが有効化されると、右側の表示が「ESXi Shell is Enabled」に変わる。


ここで再度、「Alt + F1」を再度押すと、ESXi Shellのログインプロンプトが表示される。


rootでログインしておこう。


ESXi Shellのコマンドで仮想マシンを停止する

①esxcliコマンドを使う

ESXi Shellで仮想マシンを停止する方法はいくつかある。まずはesxcliコマンドを紹介する。こちらの方法は、仮想マシンのプロセスをkillするという方法になるので、仮想マシンから見ると、突然電源をオフにされたことと同義になる。

まず、以下コマンドで起動中の仮想マシン一覧を取得し、停止したい対象仮想マシンの「World ID」を確認しておく。

[root@localhost:~] esxcli vm process list

先ほど確認した「World ID」を引数として、以下コマンドにて仮想マシンの停止を行うことができる。

[root@localhost:~] esxcli vm process kill -t soft -w <World ID>

※オプション
  • -t : 停止方法を指定するオプション。まずは、softを指定し、それでも停止しない場合はhardで再試行するとよいらしい
  • -w : World IDを指定するためのオプション

実行結果は以下の通り。実行前に存在していた仮想マシンのプロセスがなくなっていることがわかる。


②vim-cmdコマンドを使う

次にvim-cmdコマンドを使う方法を紹介する。こちらは、パワーオフ、シャットダウン、再起動、リセットなど、いくつか停止方法を選ぶことができる。

まずは、停止対象の仮想マシンのVmidを確認するため、全仮想マシンの一覧を取得する。

[root@localhost:~] vim-cmd vmsvc/getallvms

次に、停止対象の仮想マシンの状態を確認する。

[root@localhost:~] vim-cmd  vmsvc/power.getstat <Vmid>

以下コマンドでパワーオフを実施する。

[root@localhost:~] vim-cmd  vmsvc/power.off <Vmid>

なお、パワーオフ系のコマンドは以下の通りとなる。
  • パワーオフ : vim-cmd  vmsvc/power.off <Vmid>
  • 再起動 : vim-cmd  vmsvc/power.reboot <Vmid>
  • リセット : vim-cmd  vmsvc/power.reset <Vmid>
  • シャットダウン : vim-cmd  vmsvc/power.shutdown <Vmid>

ESXi Shellのコマンドで仮想マシンを起動する

仮想マシン起動も、vim-cmdコマンドで実施できる。

まずは、起動対象の仮想マシンのVmidを確認するため、全仮想マシンの一覧を取得する。

[root@localhost:~] vim-cmd vmsvc/getallvms

次に、起動対象の仮想マシンの状態を確認する。

[root@localhost:~] vim-cmd  vmsvc/power.getstat 2

以下コマンドでパワーオンを実施する。

[root@localhost:~] vim-cmd vmsvc/power.on <Vmid>

2018年7月2日月曜日

vCSA (vCenter Server Appliance) 6.7のインストールが80%で止まる件

検証を目的として、vCSA (vCenter Server Appliance) 6.7をインストールしてみた。vCSAは、VMwareのサイトからダウンロードしたISOに含まれるインストーラを使ってデプロイするのだが、インストーラの処理が80%で止まる事象が発生した。


80%の時のメッセージは「Waiting for RPM installation to start. This may take several minutes...」。どうやら、vCSA展開後のRPMインストールで失敗をしているように見える。

ここでインストーラをキャンセルして、直接vCSAの管理Web画面(https://<vCSAのIPアドレス>:5480)からインストールを続行することで、最終的にインストールは成功するのだが、80%で止まる原因がわからないままだと気持ちが悪かったので調べてみた。


原因

vCSAのインストールログは、以下ファイルに保存される。ログを確認すると赤字のエラーが発生していることがわかった。

C:\Users\<ユーザー名>\AppData\Local\Temp\2\vcsaUiInstaller\installer-YYYYMMDD-hhmmss.xxx.log
------------------------------
2018-06-23T22:02:16.216Z - info: rpmInstallProgress: hostIp=192.168.33.11, guestVmId=32, guestUser=root
2018-06-23T22:02:16.216Z - debug: rpmInitialDelay: 120000
2018-06-23T22:02:16.216Z - debug: pollRpmInstallProgress loop: delay=10000, maxLoop=720
2018-06-23T22:02:16.267Z - info: ovfProcess child process exited with code 0
2018-06-23T22:04:16.272Z - debug: initiateFileTransferFromGuest error: ServerFaultCode: Current license or ESXi version prohibits execution of the requested operation.

~(中略)~

2018-06-24T00:04:33.076Z - error: pollRpmInstallProgress reached timeout before completed: loopCount=721, installProgress=null
2018-06-24T00:04:33.087Z - info: Cancelling the ping timer for session mgmt
2018-06-24T00:04:55.496Z - info: Log file was saved at: C:\Users\tadmin\Desktop\installer-20180624-065159894.log

2018-06-24T00:07:09.363Z - warn: User clicked on the ok button to Close Dialog
------------------------------

どうやら、ESXiのライセンスの問題が原因で、仮想マシンにファイル転送が失敗しているように見える。

そういえば、インストール先のESXiは無償ライセンスで運用しており、それが原因のようだ。試しに60日間の機能無制限の評価ライセンスでESXiを構築して同様にvCSAをインストールしてみたところ、問題なくインストールすることができた。


vCSAを構築するような環境において、ESXiの無償ライセンスを使うことはないとは思うが、vCSAは商用ライセンス(あるいは60日間の評価ライセンス)を適用したESXiにインストールするように注意しよう。

失敗しても成功しても、RPMに差異はないという謎

ちなみに、80%でキャンセルした場合、RPMが正常にインストールされていないのではないかと疑問に思ったので、vCSAにSSHログインしRPMのインストール状況を調べてみた。

vCSAにSSHログインしたのち、"shell"と入力すると、一般的なLinuxのコマンドモードになる。

Command> shell
------------------------------
Shell access is granted to root
------------------------------

念のためバージョンを確認しておく。

root@t1010vcsa [ ~ ]# cat /etc/photon-release
------------------------------
VMware Photon Linux 1.0
PHOTON_BUILD_NUMBER=62c543d
------------------------------

RPMの一覧を取得する。

root@t1010vcsa [ ~ ]# rpm -qa | sort
------------------------------
acl-2.2.52-2.ph1.x86_64
apache-ant-1.9.6-9.ph1.noarch
apache-tomcat-8.5.13-1.ph1.noarch

~(中略)~

xz-5.2.2-2.ph1.x86_64
zip-3.0-2.ph1.x86_64
zlib-1.2.8-5.ph1.x86_64
------------------------------

上記のrpmのインストール一覧を80%失敗パターンのvCSAと成功パターンのvCSAで比較してみたのだが、差異が確認できなかった。

しかし、成功パターンではインストールログに以下が表示されており、RPMインストールは確かに動いてようではある。謎である

C:\Users\<ユーザー名>\AppData\Local\Temp\2\vcsaUiInstaller\installer-YYYYMMDD-hhmmss.xxx.log
------------------------------
Installing : VMware-TlsReconfigurator-6.7.0-8546234.x86_64.rpm
Installing : cis-upgrade-runner-6.7.0-8546234.x86_64.rpm
Installing : VMware-jmemtool-6.7.0-8546234.x86_64.rpm
Installing : VMware-commonjars-6.7.0-8546234.x86_64.rpm
Skip Installing : VMware-vc-support-6.7.0-8546234.x86_64.rpm
Installing : vmware-pyvmomi-6.7.0-0.0.8546290.noarch.rpm
Skip Installing : applmgmt-6.7.0-8546234.x86_64.rpm
Installing : vmware-snmp-1.2.3.rpm
Installing : rvc_1.6.0-7505591_x86_64.rpm
Skip Installing : vc-deploy-6.7.0-8546234.x86_64.rpm
Installing : VMware-unixODBC-2.3.2.vmw.2-6.7.0.x86_64.rpm
Installing : vmware-lwis-6.2.0-7806829.x86_64.rpm
Skip Installing : VMware-visl-integration-6.7.0-8546234.x86_64.rpm
Installing : vmware-afd-6.7.0.3517-8403983.x86_64.rpm
Installing : vmware-directory-client-6.7.0.2944-8403984.x86_64.rpm
Installing : vmware-directory-6.7.0.2944-8403984.x86_64.rpm
Installing : vmware-ic-deploy-6.7.0.2436-8403985.x86_64.rpm
Installing : vmware-certificate-client-6.7.0.3673-8403992.x86_64.rpm
Installing : vmware-certificate-server-6.7.0.3673-8403992.x86_64.rpm
Installing : vmware-identity-sts-6.7.0.3807-8403987.noarch.rpm
Installing : VMware-pod-6.7.0-8546234.x86_64.rpm
Installing : vmware-dns-client-1.0.0-8403990.x86_64.rpm
Installing : vmware-dns-server-1.0.0-8403990.x86_64.rpm
Installing : dbcc-1.0.0-1.noarch.rpm
Skip Installing : VMware-Log-Insight-Agent-4.5.0-5626690.noarch.rpm
Installing : VMware-vmon-6.7.0-8546234.x86_64.rpm
Installing : VMware-rhttpproxy-6.7.0-8546234.x86_64.rpm
Installing : VMware-analytics-6.7.0-8016741.x86_64.rpm
Installing : vmware-cm-6.7.0-8546234.x86_64.rpm
Installing : VMware-cis-license-6.7.0-8016740.x86_64.rpm
Installing : vmware-psc-health-6.7.0.1200-8403986.x86_64.rpm
Installing : vmware-sca-6.5.0.281-7342416.noarch.rpm
Installing : vmware-esx-netdumper-6.7.0-0.0.8546234.i386.rpm
Installing : VMware-applmon-cloudvm-6.7.0-8546234.x86_64.rpm
Installing : applmgmt-cloudvm-6.7.0-8546234.x86_64.rpm
Skip Installing : VMware-vapi-6.7.0-8546234.x86_64.rpm
Installing : VMware-Postgres-osslibs-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-osslibs-server-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-libs-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-server-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-pg_rewind-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-extras-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-cis-visl-scripts-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-pg_top-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-odbc-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-contrib-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-Postgres-client-jdbc-9.6.6.0-7698979.noarch.rpm
Installing : VMware-dbconfig-6.7.0-8546234.x86_64.rpm
Installing : VMware-Postgres-pg_archiver-9.6.6.0-7698979.x86_64.rpm
Installing : VMware-vpxd-svcs-6.7.0-8546234.x86_64.rpm
Skip Installing : VMware-certificatemanagement-6.7.0-8546234.x86_64.rpm
Skip Installing : VMware-hvc-6.7.0-8546234.x86_64.rpm
Skip Installing : VMware-trustmanagement-6.7.0-8546234.x86_64.rpm
Installing : VMware-vpxd-6.7.0-8546234.x86_64.rpm
Installing : VMware-vpxd-agents-eesx-6.7.0-8546234.x86_64.rpm
Installing : vmware-virgo-6.7.0-8546234.x86_64.rpm
Installing : VMware-cloudvm-vimtop-6.7.0-8546234.x86_64.rpm
Installing : VMware-content-library-6.7.0-8546234.x86_64.rpm
Installing : vmware-eam-6.7.0-8546234.x86_64.rpm
Installing : vmware-imagebuilder-6.7.0-8546234.x86_64.rpm
Installing : VMware-mbcs-6.7.0-8546234.x86_64.rpm
Installing : VMware-sps-6.7.0-8546234.x86_64.rpm
Installing : ipxe-1.0.0-1.5578189.vmw.i686.rpm
Installing : vmware-autodeploy-6.7.0-0.0.8546290.noarch.rpm
Installing : VMware-UpdateManager-6.7.0-8169861.x86_64.rpm
Installing : VMware-vcha-6.7.0-8546234.x86_64.rpm
Installing : vmware-cam-6.7.0.476-8404962.x86_64.rpm
Installing : VMware-vsan-dps-6.7.0-0.0.8546234.x86_64.rpm
Installing : VMware-vsan-health-6.7.0-8546234.x86_64.rpm
Installing : VMware-vsanmgmt-6.7.0-0.1.8546234.x86_64.rpm
Installing : vmware-vsm-6.7.0-8546234.x86_64.rpm
Installing : vsphere-client-6.7.0-8495100.noarch.rpm
Installing : VMware-perfcharts-6.7.0-8546234.x86_64.rpm
Installing : vsphere-ui-6.7.0.500-8477476.noarch.rpm
------------------------------

2018年6月25日月曜日

PowerShell GalleryからPowerCLIをインストールする手順

以前のPowerCLIはVMware社のサイトからインストーラをダウンロードすることができたが、最近のバージョンからはPowerShell Galleryからインストールする方法に変わった。

PowerCLI - PowerShell Gallery
https://www.powershellgallery.com/packages/VMware.PowerCLI/

手順が以前に比べて少し難しくなったので、インストール及びアンインストールの手順と、実際にPowerCLIでESXiに接続するまでの手順を説明する。

環境

今回実施した環境とPowerCLIのバージョンは以下の通り。
  • Windows Server 2016
  • PowerCLI 10.1.1.8827524

インストール方法

インターネットに接続できる端末より、Windows PowerShellを「管理者として実行する」で開く。今後のPowerShellでのコマンド実行は、原則すべて管理者権限で行う。


レポジトリを確認し、PowerShell Galleryとなっていることを確認する。

PS C:\> Get-PSRepository
------------------------------
Name                      InstallationPolicy   SourceLocation
----                      ------------------   --------------
PSGallery                 Untrusted            https://www.powershellgallery.com/api/v2/
------------------------------

以下コマンドにて、PowerShell Galleryよりモジュールのダウンロードとインストールを行う。

PS C:\> Install-Module VMware.PowerCLI
------------------------------
信頼されていないリポジトリ
信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSRepository
コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery' からモジュールをインストールしますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y   ←★"y"を入力
------------------------------


インストール確認は以下コマンドで行うことができる。

PS C:\> Get-Module -ListAvailable -Name VMware* | ft -Auto
------------------------------
    ディレクトリ: C:\Program Files\WindowsPowerShell\Modules

ModuleType Version        Name                                ExportedCommands
---------- -------        ----                                ----------------
Script     6.7.0.8250345  VMware.DeployAutomation             {Add-DeployRule, Add-ProxyServer, Add-ScriptBundle, Co...
Script     6.7.0.8250345  VMware.ImageBuilder                 {Add-EsxSoftwareDepot, Add-EsxSoftwarePackage, Compare...
Manifest   10.1.1.8827524 VMware.PowerCLI
Script     6.7.0.8343295  VMware.Vim
Script     10.1.0.8377811 VMware.VimAutomation.Cis.Core       {Connect-CisServer, Disconnect-CisServer, Get-CisService}
Script     10.0.0.7893901 VMware.VimAutomation.Cloud          {Add-CIDatastore, Connect-CIServer, Disconnect-CIServe...
Script     10.1.0.8342134 VMware.VimAutomation.Common
Script     10.1.0.8344055 VMware.VimAutomation.Core           {Add-PassthroughDevice, Add-VirtualSwitchPhysicalNetwo...
Script     6.5.4.7567193  VMware.VimAutomation.HA             Get-DrmInfo
Script     7.5.0.8827468  VMware.VimAutomation.HorizonView    {Connect-HVServer, Disconnect-HVServer}
Script     10.0.0.7893904 VMware.VimAutomation.License        Get-LicenseDataManager
Script     10.1.0.8346947 VMware.VimAutomation.Nsxt           {Connect-NsxtServer, Disconnect-NsxtServer, Get-NsxtSe...
Script     10.0.0.7893924 VMware.VimAutomation.PCloud         {Connect-PIServer, Disconnect-PIServer, Get-PIComputeI...
Script     10.1.0.8342078 VMware.VimAutomation.Sdk
Script     10.0.0.7893900 VMware.VimAutomation.Srm            {Connect-SrmServer, Disconnect-SrmServer}
Script     10.1.0.8313015 VMware.VimAutomation.Storage        {Add-KeyManagementServer, Copy-VDisk, Export-SpbmStora...
Script     1.2.0.0        VMware.VimAutomation.StorageUtility Update-VmfsDatastore
Script     10.1.0.8344219 VMware.VimAutomation.Vds            {Add-VDSwitchPhysicalNetworkAdapter, Add-VDSwitchVMHos...
Script     10.0.0.7893902 VMware.VimAutomation.Vmc            {Connect-Vmc, Disconnect-Vmc, Get-VmcService, Connect-...
Script     10.0.0.7893921 VMware.VimAutomation.vROps          {Connect-OMServer, Disconnect-OMServer, Get-OMAlert, G...
Script     6.5.1.7862888  VMware.VumAutomation                {Add-EntityBaseline, Copy-Patch, Get-Baseline, Get-Com...
------------------------------

なお、インストールされたモジュールは、以下フォルダに配置される。

C:\Program Files\WindowsPowerShell\Modules

アンインストール方法

依存関係があるので、順番に注意してアンインストールする必要がある。以下の順番でコマンドを叩いていけば、正常にアンインストールできるはずだ。

PS C:\> Uninstall-Module -Name VMware.PowerCLI
PS C:\> Get-Module -ListAvailable -Name VMware* | Uninstall-Module ←★依存関係のエラーは無視する
PS C:\> Uninstall-Module -Name VMware.VimAutomation.Cloud
PS C:\> Uninstall-Module -Name VMware.VimAutomation.Vds
PS C:\> Uninstall-Module -Name VMware.VimAutomation.Core
PS C:\> Uninstall-Module -Name VMware.VimAutomation.Cis.Core
PS C:\> Uninstall-Module -Name VMware.Vim
PS C:\> Uninstall-Module -Name VMware.VimAutomation.Common
PS C:\> Uninstall-Module -Name VMware.VimAutomation.Sdk

オフライン環境でインストール・アンインストールする方法

前述の方法は、インターネット接続が必須の手順となっているが、実環境ではインターネットに接続できないケースも多い。そこで、オフライン環境でのインストール手順も記載しておこう。

まず、インターネットに接続できる環境のPC等を用いて、以下コマンドにてモジュール一式をダウンロードする。
※あらかじめダウンロードフォルダ(以下コマンド例では「C:\VMware.PowerCLI」)を作成しておくこと

PS C:\> Save-Module -Name VMware.PowerCLI -Path C:\VMware.PowerCLI

ダウンロードファイルは以下のように21個のフォルダからなる。


上記21個のフォルダをUSBメモリなどでオフライン環境のマシンの「C:\Program Files\WindowsPowerShell\Modules」にコピーする。これだけでインストールが完了となる。

ただし、この方法でインストールしたモジュールは、Uninstall-Moduleコマンドレットを実行しても、なぜかアンインストールすることができない。この場合は、コピーした21個のフォルダを手動で削除することでアンインストールできる。

PowerCLIを使ってみる

実際にPowerCLIを使ってみることにする。以下コマンドを入力することで、モジュールがインポートされ、PowerCLIのコマンドレットが利用できるようになる。

PS C:\> Import-Module VMware.PowerCLI
------------------------------
警告: Please consider joining the VMware Customer Experience Improvement Program, so you can help us make PowerCLI a
better product. You can join using the following command:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true

VMware's Customer Experience Improvement Program ("CEIP") provides VMware with information that enables VMware to
improve its products and services, to fix problems, and to advise you on how best to deploy and use our products.  As
part of the CEIP, VMware collects technical information about your organization痴 use of VMware products and services
on a regular basis in association with your organization痴 VMware license key(s).  This information does not personally
 identify any individual.

For more details: type "help about_ceip" to see the related help article.

To disable this warning and set your preference use the following command and restart PowerShell:
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true or $false.
          Welcome to VMware PowerCLI!

Log in to a vCenter Server or ESX host:              Connect-VIServer
To find out what commands are available, type:       Get-VICommand
To show searchable help for all PowerCLI commands:   Get-PowerCLIHelp
Once you've connected, display all virtual machines: Get-VM
If you need more help, visit the PowerCLI community: Get-PowerCLICommunity

       Copyright (C) VMware, Inc. All rights reserved.
------------------------------

次にESXiまたはvCenter Serverに接続する必要があるのだが、エラーにより接続失敗してしまった。

PS C:\> Connect-VIServer 192.168.33.11
------------------------------
Connect-VIServer : 2018/06/22 0:44:28   Connect-VIServer                Error: Invalid server certificate. Use Set-Powe
CLIConfiguratio
n to set the value for the InvalidCertificateAction option to Prompt if you'd like to connect once or to add a permanen
t exception for this server.
Additional Information: 機関 '192.168.33.11' との SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立
できませんでした。
発生場所 行:1 文字:1
+ Connect-VIServer 192.168.33.11
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) [Connect-VIServer]、ViSecurityNegotiationException
    + FullyQualifiedErrorId : Client20_ConnectivityServiceImpl_Reconnect_CertificateError,VMware.VimAutomation.ViCore.
   Cmdlets.Commands.ConnectVIServer
------------------------------

この場合は、PowerCLIの設定変更が必要となる。まずは以下コマンドレットで設定を確認する。

PS C:\> Get-PowerCLIConfiguration
------------------------------
Scope    ProxyPolicy     DefaultVIServerMode InvalidCertificateAction  DisplayDeprecationWarnings WebOperationTimeout
                                                                                                  Seconds
-----    -----------     ------------------- ------------------------  -------------------------- -------------------
Session  UseSystemProxy  Multiple            Unset                     True                       300
User
AllUsers
------------------------------

「InvalidCertificateAction」が「Unset (未設定)」となっているが、これを「Ignore (無視)」に変更する。

PS C:\> Set-PowerCLIConfiguration -InvalidCertificateAction Ignore
------------------------------
Perform operation?
Performing operation 'Update PowerCLI configuration.'?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y

Scope    ProxyPolicy     DefaultVIServerMode InvalidCertificateAction  DisplayDeprecationWarnings WebOperationTimeout
                                                                                                  Seconds
-----    -----------     ------------------- ------------------------  -------------------------- -------------------
Session  UseSystemProxy  Multiple            Ignore                    True                       300
User                                         Ignore
AllUsers
------------------------------


設定後にもう一度ESXiに接続してみると、今度はエラーなく接続できる。

PS C:\> Connect-VIServer 192.168.11.11
------------------------------
Name                           Port  User
----                           ----  ----
192.168.11.11                  443   root
------------------------------

以上の通り、PowerShell GalleryからPowerCLIをインストールし、ESXiに接続することができた。今までの一般的なアプリケーションのインストール方法とは違い、コマンドベースのインストール方法となるため最初は戸惑うかもしれないが、一度やってみればそこまで難しいものではない。

参考

vSphere PowerCLI Reference - Set-PowerCLIConfiguration
https://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.powercli.cmdletref.doc%2FSet-PowerCLIConfiguration.html

2018年6月18日月曜日

ESXi 6.7の仮想マシンのネットワークアダプタで、ポートグループが設定できなくなる問題

ESXi 6.7において、仮想マシンのネットワークアダプタに対してポートグループを設定しようとした際に、以下画面のように本来存在するはずのポートグループが表示されず、設定ができなくなる事象が発生した。


いろいろ調べると発生する原因がわかったので、発生原因と対策について記載することにする。

発生原因

本事象を発生させる手順を説明することにする。まず、ポートグループが以下2つある状態から作業を実施する。
  • VM Network : 仮想マシン用ポートグループ
  • Management Network : VMkernel用ポートグループ


作業前のvSwitchの状態は以下の通り。 ポートグループ「VM Network」に「test」という仮想マシンが1台存在する状況となっている。


ここで、VMkernel NICを追加してみる。その際に、ポートグループを「VM Network」に設定する。


作成後のVMkernel NICの状態は以下の通り。


設定後のvSwitchの状態は以下のようになる。


ポートグループ「VM Network」にVMkernelポートが設定されることにより、仮想マシンのポートが消えしまっている。これが原因で、仮想マシンの設定画面においてもポートグループの設定ができなくなってしまうようだ。
※ただし、設定ができなくなるだけで、仮想マシンの通信には影響はなかった。

どうやら、1つのポートグループにVMkernelポートと仮想マシンのポートの共存はできないようだ(であれば、共存設定ができてしまうこと自体が問題な気がするが)。

回避策

VMkernel NIC作成の際に、VMkernel NIC専用の「新規ポートグループ」を作成すればよい。


この場合のvSwitchの状態は以下の通りとなる。


上記設定に変更した場合、以下の通り、仮想マシンからも正常にポートグループが選択できるようになった。


人気の投稿