Skip navigation
2018

以前に、vSAN のストレージ ポリシーを PowerCLI で変更してみる投稿をしました。

今回は、PowerCLI で vSAN データストアのデフォルト ストレージ ポリシーを確認してみます。

vSAN の仮想マシン ストレージ ポリシー を PowerCLI で変更してみる。

 

vSAN データストアでは、デフォルト ストレージ ポリシーを設定できます。

powercli-vsan-default-policy-01.png

 

PowerCLI でデフォルト ストレージ ポリシーの確認をするのは難しそうです。

vSAN Cluster の設定を確認すると「StoragePolicy」プロパティがあります。

PowerCLI> Get-Cluster vsan-cluster-03 | Get-VsanClusterConfiguration | fl Cluster,VsanEnabled,StoragePolicy

 

Cluster       : vsan-cluster-03

VsanEnabled   : True

StoragePolicy :

 

 

しかし、これは vSAN のパフォーマンスサービスの

「統計オブジェクトのストレージ ポリシー」が格納されているようです。

このクラスタでは vSAN のパフォーマンス サービスがオフのままなので、

PowerCLI の StoragePolicy は空欄になっていますが、いずれにせよ

Get-VsanClusterConfiguration の StoragePolicy ではデフォルト ストレージ ポリシーはわかりません。

powercli-vsan-default-policy-02.png

 

そこで今回はバッド プラクティスですが、

実際に vSAN Cluster に VM を作成することで、デフォルト ストレージ ポリシーを確認してみます。

 

ここでは「check-vm」という名前の VM を vSAN データストアに作成してみます。

PowerCLI> New-VM -Name check-vm -ResourcePool vsan-cluster-03 -Datastore vsanDatastore-03 -StorageFormat Thin

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

check-vm             PoweredOff 1        0.250

 

 

ストレージ ポリシーを指定せずに作成したので、

この VM のストレージ ポリシーを確認することでデフォルト ストレージ ポリシーがわかります。

この vSAN データストアのデフォルト ストレージ ポリシーは「vSAN Default Storage Policy」でした。

PowerCLI> Get-VM check-vm | Get-SpbmEntityConfiguration | fl Entity,StoragePolicy

 

Entity        : check-vm

StoragePolicy : vSAN Default Storage Policy

 

 

ということで、デフォルト ストレージ ポリシーを確認するスクリプトを作成してみました。

ポリシーのルール確認方法は、以前に投稿した下記と同じです。

vSAN の情報を PowerCLI 6.5 R1 で見てみる。

 

スクリプトの内容:

get_vsan_default_storage_policy.ps1 · GitHub

 

下記のように実行できます。

PowerCLI> .\get_vsan_default_storage_policy.ps1 <vSAN クラスタ名>

 

実行すると下記のように表示されます。

  • あらかじめ、PowerCLI のウインドウ幅は広げてあります。(120 くらい)
  • vSAN Default Storage Policy はデフォルトで作成されるポリシーですが、
    設定変更することもできるので、ポリシーのルール設定も表示してみました。
  • テスト VM を作成して、情報を取得したあとに削除しています。

powercli-vsan-default-policy-03.png

 

もっと良い方法に気づいたら、更新するかもしれません・・・

 

以上、PowerCLI で vSAN のデフォルト ストレージ ポリシーを見てみる話でした。

PowerCLI に含まれる Image Builder では、標準では含まれない VIB を追加したインストーラの

ISO イメージファイルを作成することができます。

今回は ESXi 6.5 に、RealTek の NIC ドライバを追加してみます。

 

ちなみに、ドライバを追加した ISO イメージファイルを作成する場合、

最近では Andreas Peetz さんが作成した ESXi-Customizer-PS という

PowerShell / PowerCLI ベースのツールが利用されることが多いです。

このツールについては、下記のブログで紹介されています。

 

ESXi-Customizer-PS

https://www.v-front.de/p/esxi-customizer-ps.html

 

しかし今回は、あえて標準的な PowerCLI / Image Builder を使用して

ISO イメージファイルを作成してみます。

 

今回利用するファイルについて。

ESXi 6.5 は最新のパッチ(ESXi650-201712001.zip)を MyVMware からダウンロードずみです。

 

RealTek の NIC ドライバの VIB は、おなじく

Andreas Peetz さんの下記の Web サイトで公開されているもの(Net55-r8168)を

利用させていただきます。

今回のイメージに追加するファイルは、

.vib ファイルではなくオフラインバンドルを利用してみます。

これは VIB が含まれた ZIP ファイルで、net55-r8168-8.045-napi-offline_bundle.zip です。

※せっかくオフライン バンドルも提供していただいているので・・・

 

List of currently available ESXi packages

https://vibsdepot.v-front.de/wiki/index.php/List_of_currently_available_ESXi_packages

 

ファイルは下記のように同じディレクトリに配置しています。

PowerCLI> ls .\ESXi650-201712001.zip,net55-r8168-8.045-napi-offline_bundle.zip | select Name,Length

 

Name                                         Length

----                                         ------

ESXi650-201712001.zip                     478519869

net55-r8168-8.045-napi-offline_bundle.zip   1131520

 

 

なお、PowerCLI も、インストールずみです。

 

ISO イメージ ファイルの作成。

まず、ESXi のパッチ(オフラインバンドル)を読み込みます。

今回も、不具合修正&セキュリティ修正の両方と、VMware Tools が含まれるイメージ プロファイルである

ESXi-6.5.0-20171204001-standard を利用します。

PowerCLI> Add-EsxSoftwareDepot .\ESXi650-201712001.zip

 

 

PowerCLI> Get-EsxImageProfile | where {$_.Name -notmatch "s-standard|-no-tools"} | ft -AutoSize

 

Name                            Vendor       Last Modified       Acceptance Level

----                            ------       -------------       ----------------

ESXi-6.5.0-20171204001-standard VMware, Inc. 2017/12/18 11:40:25 PartnerSupported

 

 

RealTek ドライバのオフラインバンドルを読み込みつつ、

ついでに含まれている VIB の名前を見ておきます。

VIB の名前は、net55-r8168 です。

PowerCLI> Add-EsxSoftwareDepot .\net55-r8168-8.045-napi-offline_bundle.zip | Get-EsxSoftwarePackage | ft -AutoSize

 

Name        Version    Vendor  Creation Date

----        -------    ------  -------------

net55-r8168 8.045-napi Realtek 2018/02/08 12:46:36

 

 

ちなみに、VIB のファイル名も確認できたりします。

PowerCLI> Get-EsxSoftwarePackage -AcceptanceLevel CommunitySupported -Name net55-r8168 | select SourceUrls

 

SourceUrls

----------

{zip:D:\work\net55-r8168-8.045-napi-offline_bundle.zip?net55-r8168-8.045-napi.x86_64.vib}

 

 

今回 読み込んだ VIB パッケージの中で、net55-r8168 だけは

他よりも許容レベル(AcceptanceLevel)が低く、CommunitySupported のパッケージです。

PowerCLI> Get-EsxSoftwarePackage -AcceptanceLevel CommunitySupported | ft -AutoSize

 

Name        Version    Vendor  Creation Date

----        -------    ------  -------------

net55-r8168 8.045-napi Realtek 2018/02/08 12:46:36

 

 

イメージ プロファイルの 許容レベル については、ドキュメントでは下記のあたりに説明があります。

VIB およびホストの許容レベルについて

 

そこで新しく作成するイメージ プロファイルも、許容レベルを CommunitySupported にします。

新しいプロファイル名は、わかりやすく ESXi-6.5.0-20171204001-with-realtek にしました。

Vendor の指定も必須になるので、今回は HomeLab としています。

PowerCLI> New-EsxImageProfile -CloneProfile $image_profile -Vendor HomeLab -Name ESXi-6.5.0-20171204001-with-realtek -AcceptanceLevel CommunitySupported | fl Name,Vendor,AcceptanceLevel

 

Name            : ESXi-6.5.0-20171204001-with-realtek

Vendor          : HomeLab

AcceptanceLevel : CommunitySupported

 

 

作成したプロファイルに、ドライバを追加します。

PowerCLI> Add-EsxSoftwarePackage -ImageProfile ESXi-6.5.0-20171204001-with-realtek -SoftwarePackage net55-r8168

 

Name                           Vendor          Last Modified   Acceptance Level

----                           ------          -------------   ----------------

ESXi-6.5.0-20171204001-with... HomeLab         2018/02/10 1... CommunitySupported

 

 

ドライバの VIB パッケージが追加されています。

PowerCLI> Get-EsxImageProfile -Name ESXi-6.5.0-20171204001-with-realtek | select -ExpandProperty VibList | where {$_.Name -eq "net55-r8168"} | ft -AutoSize

 

Name        Version    Vendor  Creation Date

----        -------    ------  -------------

net55-r8168 8.045-napi Realtek 2018/02/08 12:46:36

 

 

ISO イメージ ファイルとしてエクスポートします。

PowerCLI> Export-EsxImageProfile -ImageProfile ESXi-6.5.0-20171204001-with-realtek -ExportToIso -FilePath .\ESXi-6.5.0-20171204001-with-realtek.iso

 

ついでに、ドライバを追加したイメージ プロファイルの

オフラインバンドルもエクスポートしておきます。

これは、後でこのイメージにさらに VIB を追加したい場合などに利用できます。

PowerCLI> Export-EsxImageProfile -ImageProfile ESXi-6.5.0-20171204001-with-realtek -ExportToBundle -FilePath .\ESXi-6.5.0-20171204001-with-realtek.zip

 

結果として、下記のようなファイルが作成されます。

PowerCLI> ls | select Name,Length

 

Name                                         Length

----                                         ------

ESXi-6.5.0-20171204001-with-realtek.iso   350390272

ESXi-6.5.0-20171204001-with-realtek.zip   341466626

ESXi650-201712001.zip                     478519869

net55-r8168-8.045-napi-offline_bundle.zip   1131520

 

 

この ISO イメージファイルで ESXi をインストールすると、

通常のインストーラでは認識できない RealTek の NIC が認識できるようになります。

esxi65-realtek-pnic.png

 

ちなみに ESX Shell や SSH で直接ログインして確認すると、下記のように認識されています。

[root@localhost:~] vmware -vl

VMware ESXi 6.5.0 build-7388607

VMware ESXi 6.5.0 Update 1

[root@localhost:~] esxcli network nic list

Name    PCI Device    Driver  Admin Status  Link Status  Speed  Duplex  MAC Address         MTU  Description                                                   

------  ------------  ------  ------------  -----------  -----  ------  -----------------  ----  -----------------------------------------------------------------------------------------

vmnic0  0000:01:00.0  r8168   Up            Up            1000  Full    d8:9e:f3:7c:91:c6  1500  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

 

おまけ。

以前に似たようなことをしていましたので、こちらもどうぞ・・・

ESXi のオフライン バンドルから ISO イメージ ファイルを作成してみる。

ESXi 5.5 を Intel NUC にインストールしてみる。

ESXi 5.5 を Intel Haswell NUC にインストールしてみた。

ネステッドESXi 用 VMware Tools 導入済みの ESXi 5.5 を作成してみました。(Image Builder PowerCLI)

 

以上、ESXi 6.5 でカスタムイメージを作成してみる話でした。

PowerCLI で、vSAN の情報取得や設定、操作などをすることができます。

今回は、vSAN クラスタの概要を取得するスクリプトのサンプルを作成してみました。

 

以前に VMware Hands-on Labs(HoL)で PowerCLI をためしてみる投稿をしてみましたが、

この時はコピー&ペーストでためす都合により、ワンライナーっぽい実行例でした。

vSAN の情報を PowerCLI 6.5 R1 で見てみる。

 

手元に vSAN 環境がある場合は、コマンドラインを1行ずつ実行するよりも

スクリプトにして実行したほうが便利なケースがあると思います。

たとえば以前に HoL でためしたコマンドラインをまとめて、

下記のリンクにあるようなスクリプトで vSAN 環境の概要を確認することができます。

get_vsan_summary.ps1 · GitHub

 

このスクリプトを実行すると、下記のような感じになります。

  • PowerShell / PowerCLI のウインドウ幅は 140 にしてあります。
  • Connect-VIServer で vCenter に接続してから実行しています。
  • vSAN クラスタは 3つあります。(最初にクラスタ設定だけ表示)
  • vSAN Disk のデバイス名(CanonicalName)は長すぎて切れてますが、
    ウインドウ幅を広げて実行すれば全体が表示されます。
  • 長いので2クラスタ目の途中までの表示となってますが、
    1クラスタ目の様子で雰囲気を感じてもらえればと思います。

powercli-vsan-report-sample.png

 

ちなみに PowerCLI のプロンプト「PowerCLI>」は、下記のように工夫しています。

PowerCLI プロンプト文字列に vCenter への接続状態を反映してみる。

 

そして今回ためした PowerCLI のバージョンは下記です。

PowerCLI> Get-PowerCLIVersion | select UserFriendlyVersion

 

UserFriendlyVersion

-------------------

VMware PowerCLI 6.5.1 build 5377412

 

 

PowerCLI> Get-Module VMware.* | select Version,Name

 

Version       Name

-------       ----

6.5.2.6234650 VMware.VimAutomation.Core

6.5.1.5374001 VMware.VimAutomation.Storage

6.5.1.5374428 VMware.VimAutomation.Vds

 

 

今回のサンプルスクリプトは、vSAN の情報を網羅的に取得しているわけではなかったり、

スクリプトの書き方が独特だったりしますが、何かのヒントにしていただければと思います。

 

以上、PowerCLI での vSAN 情報の取得例でした。

ESXi 6.5 の「仮想マシン バージョン 13」(vmx-13)では

対応するゲスト OS の種類が増えましたが、

これまで対応していた OS の細分化もされています。

 

たとえば Oracle Linux や CentOS などは、Red Hat Enterprise Linux 異なり

これまで「Oracle Linux 4/5/6・・・」 のように 1つにまとめられていました。

しかし、vmx-13 の VM では「Oracle Linux 6」「Oracle Linux 7」と、ちゃんと細分化されました。

esxi65-guestid-01.png

 

vCenter 6.5 の vSphere Web Client で見ると、

vmx-11 の VM での Oracle Linux は下記のようになっています。

esxi65-guestid-02.png

 

そして

vmx-13 の VM での Oracle Linux は下記のように分割されています。

esxi65-guestid-03.png

 

API のリファレンスを見ると、

実際に増えた ゲスト OS の GuestId が「Since vSphere API 6.5」でわかりそうです。

 

Enum - VirtualMachineGuestOsIdentifier(vim.vm.GuestOsDescriptor.GuestOsIdentifier)

https://vdc-repo.vmware.com/vmwb-repository/dcr-public/6b586ed2-655c-49d9-9029-bc416323cb22/fa0b429a-a695-4c11-b7d2-2cbc284049dc/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html

 

リファレンスにあるゲスト OS の NAME は VM の GuestId とおなじもので、

PowerCLI などでゲスト OS の種類を指定するときに使用されます。

従来だとバージョン指定がない oracleLinux64Guest だけでしたが

oracleLinux6_64Guest、oracleLinux6_64Guest などが追加されています。

PowerCLI> Get-VM oracle-* | select Name,GuestId | sort Name

 

Name              GuestId

----              -------

oracle-linux-6-vm oracleLinux6_64Guest

oracle-linux-7-vm oracleLinux7_64Guest

oracle-linux-vm   oracleLinux64Guest

 

 

このように、以前より VM にゲスト OS の指定が明確にできるようになりました。

 

また、.vmx ファイルの直接編集などで vmx-11 以前の仮想マシンに

vmx-13 以降に追加された GuestId を指定してしまうと、

vSphere Web Client での VM の設定確認・変更ができなくなることがあるので

注意が必要かもしれません。

たとえば、vmx-11 の VM に vmx-13 で追加された「VMware Photon OS (64-bit)」

(vmwarePhoton64Guest)を指定するとこの問題が起きたりします。

※実は Photon OS 2.0 GA の vmx-11 版の ova ファイルがそうなっていたりします。

 

以上、ESXi 6.5 での GuestId についてでした。

最新の ESXi を利用したい場合、たいてい ISO イメージ ファイルからインストールした後に

オフライン バンドルとよばれるパッチを適用することになります。

 

しかし PowerCLI の Image Builder を利用することで、オフライン バンドルの zip ファイルから

そのパッチが適用された ESXi の ISO イメージ ファイルをエクスポートすることができます。

 

Image Builder のドキュメントは下記のあたりです。

vSphere ESXi Image Builder を使用したインストールのカスタマイズ

 

Image Builder については、以前に下記のブログでも紹介されていました。

VMware ESXi イメージ管理ベストプラクティス その1 - Japan Cloud Infrastructure Blog - VMware Blogs

VMware ESXi イメージ管理ベストプラクティス その2 - Japan Cloud Infrastructure Blog - VMware Blogs

 

本来であれば Image Builder は、ハードウェア特有のドライバ追加などの場合に利用されますが、

今回はただ、パッチから最新版 ESXi のインストーラを抽出するためだけに利用してみます。

 

PowerCLI をインストールしておきます。

今回のバージョンは下記です。

PowerCLI> Get-PowerCLIVersion | select User*

 

UserFriendlyVersion

-------------------

VMware PowerCLI 6.5.1 build 5377412

 

 

ESXi のオフラインバンドル(パッチ)を MyVMware からダウンロードしておきます。

PowerCLI> ls .\ESXi650-201712001.zip | select Name,Length

 

Name                     Length

----                     ------

ESXi650-201712001.zip 478519869

 

 

ISO イメージ ファイルのエクスポート。

Image Builder で、オフライン バンドルを読み込みます。

PowerCLI> Add-EsxSoftwareDepot .\ESXi650-201712001.zip

 

Depot Url

---------

zip:D:\VMware\ESXi\ESXi650-201712001.zip?index.xml

 

 

オフラインバンドルには、複数のイメージ プロファイルが含まれています。

今回は、VMware Tools のインストーラと、セキュリティパッチ以外の修正も含んでいる

「ESXi-6.5.0-20171204001-standard」というイメージ プロファイルを利用します。

PowerCLI> Get-EsxImageProfile | ft -AutoSize

 

Name                             Vendor       Last Modified       Acceptance Level

----                             ------       -------------       ----------------

ESXi-6.5.0-20171201001s-no-tools VMware, Inc. 2017/12/18 11:40:25 PartnerSupported

ESXi-6.5.0-20171204001-standard  VMware, Inc. 2017/12/18 11:40:25 PartnerSupported

ESXi-6.5.0-20171204001-no-tools  VMware, Inc. 2017/12/18 11:40:25 PartnerSupported

ESXi-6.5.0-20171201001s-standard VMware, Inc. 2017/12/18 11:40:25 PartnerSupported

 

 

イメージプロフィアるを指定して、ISO イメージ ファイルをエクスポートします。

PowerCLI> Export-EsxImageProfile ESXi-6.5.0-20171204001-standard -ExportToIso -FilePath D:\work\ESXi-6.5.0-20171204001-standard.iso

 

ISO イメージ ファイルがエクスポートされました。

 

PowerCLI> ls D:\work\ESXi-6.5.0-20171204001-standard.iso | select Name,Length

 

Name                                   Length

----                                   ------

ESXi-6.5.0-20171204001-standard.iso 349245440

 

 

PowerCLI スクリプト編。

同様のことができる簡易的な PowerCLI スクリプトを作成してみました。

(ただし特にエラー制御とかはしていません。)

 

export_esxi-offline-bundle_to_iso.ps1

ESXiのオフラインバンドルから、ISO イメージファイルをエクスポート。 · GitHub

 

下記のように、オフライン バンドルと、スクリプト ファイルを配置して・・・

PowerCLI> ls | select Name,Length

 

Name                                     Length

----                                     ------

ESXi650-201712001.zip                 478519869

export_esxi-offline-bundle_to_iso.ps1       502

 

 

オフライン バンドルのファイル名とエクスポート先のディレクトリを指定して実行します。

PowerCLI> .\export_esxi-offline-bundle_to_iso.ps1 .\ESXi650-201712001.zip D:\work\

Export ISO File: D:\work\ESXi-6.5.0-20171204001-standard.iso

 

この ISO ファイルからブートして、ESXi をインストールすることができます。

export-iso-boot.png

 

vSAN の動作確認などでは最新の ESXi を利用したかったりするので、

環境構築の効率化として活用できるかもしれないと思います。

 

以上、Image Builder で ESXi のパッチから ISO イメージ ファイルをエクスポートする話でした。