●久々にESXiのカスタムISOをつくってみた

ブログのタイトルに仮想化という言葉がはいっているのですが、ここ2-3年ESXiなどにちゃんと触れていないことに気づき、後ろめたい気持ちがあったので、久々に仮想化について記載いたします。

今回は自作PCをくみ上げ、ESXi 6.7をインストールしてみました。
※7じゃなくて6.7な理由は、自作パソコンをくみ上げた後にオンボードnicがRealtekさんだったことに気づいたためです。

ESXi 6.7までは有志の方が作ったRealtekのドライバを使うことができたようなのですが、7では使えないらしく、泣く泣くこの選択になりました。。。


そのため、インストールではなく、カスタムイメージの作成から始まります。
※というかインストールはいろんな人がすでにブログで書いており、現状ほぼ自分も迷わないので、忘備録としてカスタムISOの作成だけを記載します。。汗
普段Workspace ONEに触れている私は、ESXiのカスタムイメージを作成する機会が滅多になく、作成のたびに2時間程度調べて格闘しなければいけなかったので、この機会に忘備録として記載してしまいます。。

なお、必要なイメージやVIBなどは以下を利用しました。
●ESXiのカスタムイメージ作成をやる前に、概念をぼんやり思い出そう
今回のESXiカスタムイメージ作成では、以下二つの概念が出てきます。
  • ソフトウェアデポ
    これはVIBなどのソフトウェアモジュールをプールしたモノのようです。ESXiのオフラインバンドルや拡張VIBモジュールのzipを入手したら、Add-EsxSoftwareDepotコマンドレットを使用して、とりあえずソフトウェアデポに追加していきます。
  • プロファイル
    ESXiのイメージのプロファイルです。上記のソフトウェアデポに登録されたモジュールのうち、どのソフトウェアモジュールを使ってESXiのイメージを構成するかを定義したものです。
流れとしては、「欲しいソフトウェアモジュールをソフトウェアデポに放り込む→どのモジュールを含むか指定したプロファイルを定義して、プロファイルを使ってソフトウェアデポの中にあるVIBを選択し、カスタムISOに固める」という感じになるのかな、と思います。
※ESXiのイメージ作成が久しぶりすぎて、厳密には上記理解は間違ってそうな気がしますが。。。。

●とりあえずやってみよう!

ではさっそく始めていきます。
今回、デスクトップにesxiのイメージを編集するためのディレクトリを作成し、その中に必要なオフラインバンドルとコミュニティサポートのRealtekドライバのzipファイルを配置しています。

PS C:\Users\dyajima\Desktop\esxi> dir


    ディレクトリ: C:\Users\dyajima\Desktop\esxi


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2020/12/23     19:49      473650008 ESXi670-201912001.zip
-a----       2020/12/23     19:03        1131668 net55-r8168-8.045a-napi-offline_bundle.zip


PS C:\Users\dyajima\Desktop\esxi>

ESXiのオフラインバンドルをソフトウェアデポに登録します。

PS C:\Users\dyajima\Desktop\esxi> Add-EsxSoftwareDepot .\ESXi670-201912001.zip

Depot Url
---------
zip:C:\Users\dyajima\Desktop\esxi\ESXi670-201912001.zip?index.xml


PS C:\Users\dyajima\Desktop\esxi>

ちょっとコマンドの証跡を取り忘れてしまったのですが、ソフトウェアデポにバンドルを登録したら、"Get-EsxSoftwarePackage"コマンドで現在ソフトウェアパッケージとしてデポに登録されたソフトウェアの一覧を一度確認して控えておいてください

次に、変数$aにESXのイメージプロファイルを格納します。
PS C:\Users\dyajima\Desktop\esxi> $a =get-esximageprofile

こうしておくと以下のように $a という変数を入力することで、PowerShell上でESXiのプロファイルなどを扱えます。

PS C:\Users\dyajima\Desktop\esxi> $a

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-6.7.0-20191201001s-no-... VMware, Inc.    2019/11/25 1... PartnerSupported
ESXi-6.7.0-20191201001s-sta... VMware, Inc.    2019/11/25 1... PartnerSupported
ESXi-6.7.0-20191204001-no-t... VMware, Inc.    2019/11/25 1... PartnerSupported
ESXi-6.7.0-20191204001-stan... VMware, Inc.    2019/11/25 1... PartnerSupported

この状態では、変数 $a の中に4つのイメージプロファイルが格納されています。
多分変数 $a はArray型の変数(?)のようなので、後ろに[数字]として挙げると、上から数えて[数字]番目のイメージプロファイルだけ見ることができます。また、.Nameなどと属性を指定してあげると、その属性だけを表示してくれます。
※カウントは0番目から開始されます。

PS C:\Users\dyajima\Desktop\esxi> $a[0]

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-6.7.0-20191201001s-no-... VMware, Inc.    2019/11/25 1... PartnerSupported


PS C:\Users\dyajima\Desktop\esxi> $a[0].Name
ESXi-6.7.0-20191201001s-no-tools
PS C:\Users\dyajima\Desktop\esxi>

変数 $a の中の各イメージプロファイルの詳細を見たいときは以下のようにします。
今回は以下のイメージプロファイルをもとにカスタムイメージを作成したいと思います。

PS C:\Users\dyajima\Desktop\esxi> get-esximageprofile -name $a[1].Name | select -Property *


Name            : ESXi-6.7.0-20191201001s-standard
Vendor          : VMware, Inc.
Author          :
Description     : Updates ESXi 6.7 Image Profile-ESXi-6.7.0-20191201001s-standard
CreationTime    : 2019/11/25 11:43:03
ModifiedTime    : 2019/11/25 11:43:03
ReadOnly        : False
VibList         : {ata-pata-amd 0.3.10-3vmw.670.0.0.8169922, scsi-megaraid-mbox 2.20.5.1-6vmw.670.0.0.8169922, vmware-esx-esxcli-nvme-plugin 1.2.0.36-2.48.13006603, elxnet 11.4.1097.0-5vmw.67
                  0.3.73.14320388...}
AcceptanceLevel : PartnerSupported
Guid            : bd75ba940f7811ea9763005056affc1c
Rules           :
StatelessReady  : True


PS C:\Users\dyajima\Desktop\esxi>

次に選んだイメージプロファイルをコピーして、新しくイメージプロファイルを作成します。
※今回、コミュニティサポートのRealtekのVIBモジュールを追加してカスタムイメージを作るので、AcceptanceLevelをcommunityにしないと、後でコミュニティサポートのrealtekのドライバが追加できません
PS C:\Users\dyajima\Desktop\esxi> New-EsxImageProfile -CloneProfile ESXi-6.7.0-20191201001s-standard -Name RealtekVIBaddded -AcceptanceLevel community

コマンド パイプライン位置 1 のコマンドレット New-EsxImageProfile
次のパラメーターに値を指定してください:
(ヘルプを表示するには、「!?」と入力してください。)
Vendor: Custom

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
RealtekVIBaddded               Custom          2019/11/25 1... CommunitySupported


PS C:\Users\dyajima\Desktop\esxi>

これで私の欲しいESXiカスタムイメージを作成するためのプロファイルが作成されました。
次に、ダウンロードしたRealtekのドライバを含むVIBをソフトウェアデポに登録します。
PS C:\Users\dyajima\Desktop\esxi> Add-EsxSoftwareDepot -DepotUrl zip:C:\Users\dyajima\Desktop\esxi\net55-r8168-8.045a-napi-offline_bundle.zip?index.xml

Depot Url
---------
zip:C:/Users/dyajima/Desktop/esxi/net55-r8168-8.045a-napi-offline_bundle.zip?index.xml


PS C:\Users\dyajima\Desktop\esxi>

ちょっとコマンドの証跡を取り忘れてしまったのですが、ソフトウェアデポにVIBを登録したら、"Get-EsxSoftwarePackage"コマンドで現在ソフトウェアパッケージとしてデポに登録されたソフトウェアの一覧を一度確認して控えておいてください。
ESXiのオフラインバンドル登録直後のソフトウェアパッケージの一覧に、net55-r8168という名前のソフトウェアパッケージが追加されているはずです。そのパッケージを、ESXiカスタムイメージを作成するためのプロファイルに追加します。

PS C:\Users\dyajima\Desktop\esxi> Add-EsxSoftwarePackage -ImageProfile RealtekVIBaddded -SoftwarePackage net55-r8168

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
RealtekVIBaddded               Custom          2020/12/23 1... CommunitySupported


PS C:\Users\dyajima\Desktop\esxi>

最後に、ISOイメージとしてエクスポートすれば、カスタムISOの完成です。
※今回はHomelabのために、パッケージ間の依存関係とか気にせずカスタムイメージを作成しましたが、本番サーバにあてるイメージを作成するときは、ちゃんと確認しましょう。。汗
PS C:\Users\dyajima\Desktop\esxi> Export-EsxImageProfile -ImageProfile RealtekVIBaddded -ExportToIso -FilePath C:\Users\dyajima\Desktop\esxi\RealtekVIBaddded.iso
PS C:\Users\dyajima\Desktop\esxi>

以上です。