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の状態は以下の通りとなる。


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


2018年6月12日火曜日

ESXiのVMware Host Clientの自動ログアウトの無効化と、コンソールのキーボードレイアウトを設定する

ESXi 6.5以降は、正式にvSphere Clientがサポートされなくなり、操作はブラウザから実施することが必須となった。vCenter Serverがある場合は、vSphere Web Clientを利用し、ESXiを直接操作する場合は、VMware Host Clientを利用する。

VMware Host Clientは、ログインした後、一定期間操作をしないと自動ログアウトしてしまう。セキュリティ面ではよい設定ではあるが、自宅検証環境で利用するには不便な設定であるため、この設定を解除することにした。

また、ブラウザで利用する仮想マシンのコンソール(ブラウザコンソール)でキーボードレイアウトが正しく認識できない事象も発生したため、キーボードレイアウトの変更方法についても記載する。

タイムアウト設定

左上の「アカウント名@ログイン先」から、「設定」→「アプリケーションのタイムアウト」で選択することができる。デフォルトが15分となっているので、任意の時間に変更すればよい。


今回は「オフ」に設定した。その場合は以下のようなセキュリティに関する警告が表示されるが、「はい」を選べば問題なく設定が完了する。


ブラウザコンソールのキーボードレイアウトの変更

左上の「アカウント名@ログイン先」から、「設定」→「コンソール」→「キーボードレイアウト」から設定できる。デフォルトでは「英語」になっている。


あるいは、ブラウザコンソールを開き、右上の国旗マークからも選択できる。


日本語キーボードの場合は、「日本語」にしておけば問題はないと思われがちだが、OSによっては「英語」にしておかなければうまく記号が入力できない場合がある(「"」を入力しようとしたら「@」になったりする)。そのため、キーボードレイアウトの設定は、状況に応じて随時切り替えて使う方がよさそうだ。

あるいは、ブラウザコンソールではなくVMware Remote Consoleをインストールして利用する方が、操作性の観点からもメリットがあるのでお勧めとなる。

2018年6月5日火曜日

vCenter Convertor Standaloneを使ってHyper-Vの仮想マシンをvSphere環境に移行する

Hyper-VからvSphere環境に仮想マシンを移行するために、無償で利用できるvCenter Converter Standaloneを試してみた。

vCenter Converter Standaloneとは

vCenter ConverterはVMwareが昔から無償で提供しているvSphere環境へのサーバー移行ツールとなり、P2VやV2Vで利用することができる。

2018年5月時点の最新バージョンは6.2となり、ダウンロードは以下URLから可能となる。

ダウンロード VMware vCenter Converter Standalone 6.2
https://my.vmware.com/web/vmware/details?productId=701&downloadGroup=CONV62

vCenter Converter Standaloneの特徴は以下の通り。
  • 無償で利用できる
  • Windows PCまたはWindows Server製品にインストール可能
  • 移行時は、変換元と変換先の両方にネットワーク接続できる必要がある
  • WAN越しでのデータ移行はサポート対象外
  • Hype-VおよびESXiを移行元に指定する場合は、仮想マシンが電源OFF状態のオフライン移行のみサポート
移行元のデータをファイル等に出力することができず、WAN越しの移行もできないことから、同一データセンター内でLAN接続ができる環境で移行するためのツールとなる。逆にデータセンターをまたぐような環境の移行においては、ZertoやAcronisなどの有償の移行ツールを選定する必要がある。

環境

今回はHyper-Vの仮想マシンをvSphere環境に移行する手順を確認してみた。環境は以下の通り。
  • 移行ツール:vCenter Converter Standalone 6.2
  • 移行元:Hyper-V 2012 (R2なし) 上のWindows Server 2012 (R2なし)
  • 移行先:vSphere ESXi 6.0 Update 3a
図示すると以下のようになる。


今回は同一セグメントでの接続をしているが、ネットワーク経路上にFirewallが存在する場合は、以下URLを参考に必要なポートの開放が必要となる。

必要な VMware vCenter Converter ポート (2078649)
https://kb.vmware.com/s/article/2078649

Hyper-V仮想マシンをvSphere環境に変換する手順

手順自体はウィザードに従って選択をしていくだけなので、それほど難しい手順ではない。

1. vCenter Converter Standaloneの起動

通常はインストールするとデスクトップにショートカットがあるはずなので、ダブルクリックして起動する。


2. 仮想マシン移行のウィザードを開始

画面左上の「Convert machine」を選択する。


3. 移行元ホストの指定

Source Systemは「Hyper-V Server」を選択し、IPアドレス、ユーザー名、パスワードを入力する。Administrator権限を持つユーザーを指定しておけば問題ないだろう。


4. 移行元ホストにエージェントをデプロイ

移行元のHyper-V環境にエージェントをデプロイするためのダイアログボックスが表示される。移行成功後に自動でエージェントをアンインストールするかどうかの設定となるので、今回は「I will manually uninstall the files later (後で手動でアンインストール)」を選択する。


エージェントのデプロイが始まるのでしばらく待つ。


なお、デプロイ後に移行元のHyper-Vでプログラムの一覧を確認すると、「vCenter Converter Standalone Agent」がインストールされていることを確認できる。不要になった場合は、別途ここからアンインストールすればよい。


5. 移行対象仮想マシンの指定

エージェントのデプロイ完了後、Hyper-V上の仮想マシン一覧が表示される。移行対象のVMが「Powered off」になっていることを確認し、選択する。


6. 移行先ホストの指定

Destination Systemでは、「VMware Infrastructure virtual machine」を選択し、IPアドレス、ユーザー名、パスワードを選択する。rootを選んでおけば問題ないだろう。


7. 移行先ホストの確認

移行先のESXi上の仮想マシン一覧が表示される。仮想マシン名が重複する場合はエラーとなるため、重複しない名前で「Name」を設定する。


8. 仮想マシンの各種設定

仮想マシン移行時の各種設定が行える。設定項目は以下の通り。
  • Data to coy : 移行対象のディスクとディスクタイプ(Thin、Thick)を設定できる
  • Devices : CPUやメモリを設定できる
  • Networks : NICの接続先ポートグループや仮想NICタイプを設定できる
  • Services : 移行対象仮想マシンのWindowsサービスの自動起動設定を変更できる
  • Advanced options : 移行対象仮想マシンの移行後の処理を設定できる。たとえば、移行後に仮想マシンを起動する、VMware Toolsをインストールする、といった設定ができる
  • Throttling : 移行時に使用できるCPU優先度、ネットワーク帯域を設定できる


今回は、ディスクをデフォルトのThickからThinに変更して移行を行うことにした。


9. 仮想マシンの移行の開始と完了

移行が開始すると、Status欄に進捗状況が表示されるので、完了するまで待機する。


問題なく移行が完了すると、Status欄にCompletedと表示される。


10. 移行直後のスナップショットを取得

このタイミングで一度仮想マシンのスナップショットを取得することを推奨する。というのも、移行後の仮想マシンの初回起動では、環境変更に伴うデバイスの再認識やドライバの更新が実施される。さらに、VMware Toolsの再インストールやNICの再設定も実施が必要となることから、万が一初期設定時に想定外事象が発生しても、移行直後の状態に戻せるようにしておくとリカバリが簡単になる。


11. 仮想マシンの起動

移行対象のWindows Server 2012は、特に何事もなかったように起動した。


12. 起動後の仮想マシンの設定

初回起動直後にデバイスマネージャーを確認すると、1つだけ認識に失敗しているデバイスが存在していた。こちらはVMware Toolsをインストールすることで解消した。


また、ネットワークインターフェースの情報はすべてリセットされてしまうため、再度IPアドレス等の設定を実施する必要がある。


ディスクに関しては、OSがインストールされているディスクに関しては正常に認識するようだが、それ以外のディスクはオフラインとなっているので、一度「ディスクの管理」からオンラインにする必要があった。


オンラインにすれば、ドライブレター含めて、正常に認識しなおしてくれた。


以上のように、そこまで難しい操作をすることなくHyper-VからvSphere環境への仮想マシン移行に成功した。同じような手順で物理サーバーのWindowsやLinuxからもvSphere環境の仮想マシンへ変換できるため、費用をかけずにP2VやV2Vを実施したい場合は、VMware vCenter Converter Standaloneの利用を検討するとよいだろう。

参考

VMware vCenter Converter Standalone 6.2 Release Notes
https://docs.vmware.com/en/vCenter-Converter-Standalone/6.2/rn/conv_sa_62_rel_notes.html

人気の投稿