インテルNUC11を買って、おうちクラウド(ESXi7.0U2e)を立ててみた

# 背景
vSphereとKubernetesのお勉強のために、おうちクラウドを立ててみることにしました。
最初はKubernetesの勉強のためにラズパイを買おうと思ってたのですが、NUCでvSphere環境を立てて、VMを使ってKubernetes環境を作ってるブログを見かけて、ちょうどvSphere勉強もしたかったので、これだ！と思ってすぐにNUCの購入に至りました。
ESXiの構築だけでボリューミーになったので、このページではESXi構築部分だけ説明します。

# 環境準備
以下を準備します。
|用意したもの|利用目的など|
|---|---|
|WindowsPC|各種ソフトウェアダウンロードや、USBメモリに保存するのに利用。私は昔買ったSurface3(Windows10)を使いました。|
|NUC11PAHi5|今回セットアップするインテル社の小型PC。MACminiの1/4くらいのサイズ感。|
|USBメモリ(64GB)|BIOSのアップデートとESXiのインストールに使った。16GBもあれば十分かも？|
|キーボード|セットアップ操作に利用。USBで繋ぐWiFi子機のついた無線キーボード。Bluetoothキーボードはセットアップに使えないらしい。|

### 環境準備の注意ポイント
- ESXiのカスタムイメージを作る必要があるのですが、MACだと作成できませんでした。
おとなしくWindows端末で進めることをおすすめします・・・。
- NUCにはSSD、メモリ、電源コネクタ〜コンセントまでの電源ケーブルがついてきません。別途購入する必要があります。
※NUCの型番によって対応しているものが違うため、NUCの仕様書をよく見てAmazonで買いましょう！
- ESXiをインストールするのにUSBメモリを使うので、ない場合は購入しておきましょう。

# BIOSアップデート
## インストールファイルダウンロード
こちらのリンクからBIOSをダウンロードします。

https://www.intel.co.jp/content/www/jp/ja/support/products/205040/intel-nuc/intel-nuc-kits/intel-nuc-kit-with-11th-generation-intel-core-processors/intel-nuc-11-performance-kit-nuc11pahi5.html#support-product-specification

利用可能なダウンロードを絞り込みは、`OS非依存`を選択すると探しやすいです。
`BIOS Update [PATGL357]`の`詳細を見る`ボタンからダウンロードページに遷移できます。
`PA0046.CAP`をダウンロードします。
※ダウンロードできるファイルがいくつか並んでると思いますが、ページ下部にどれを選択すべきか詳細が書いてあります。
今回はF7アップデートという方法で実行しますので、こちらをPA0046.CAPを選択しました。

### ダウンロード時の注意ポイント
NUCの型番や目的にあったものを選びましょう！上記リンクはNUC11PAHi5のものです

## BIOSアップデート
1. USBメモリをFAT32でフォーマット(初期化)しておきます。
2. フォーマットしたUSBメモリのルートディレクトリに、先程ダウンロードした`PA0046.CAP`を保存します。
3. USBメモリをNUCに指します。
4. 起動中に`F7キー`を押します。(起動してからF7連打しとけばOK!)
もしかしたらUSBの中身を見て勝手にBIOSセットアップ画面を開いてくれるかも？
5. `Storage Media`を選択
6. `PA0046.CAP`を選択
7. Process Bios Updateと表示されるので、`Yes`を選択
8. アップデートを待ちます
### アップデート時の注意ポイント
アップデート中は電源を落とさないように注意しましょう。故障の原因になります。

# BIOSの設定
1. NUCを起動したら、F2キーを押してBIOS設定画面を開きます。
2. こちらのサイトを参考に設定しました。

https://www.slideshare.net/yukikawamitsu/20210922-250264836

# vSphere Hypervisor(ESXi)カスタムイメージを作成
1. PowerShellを起動する。
2. PowerCLIをインストール。
`Install-Module -Name VMware.PowerCLI -Scope CurrentUser`
3. 一時的に実行ポリシーを緩和。
`Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process`
実行ポリシーの変更をしても良いか聞かれたら、はい(Y)を選択。
(参考)MACだとサポート外って表示されて、これ以上進めませんでした。
4. ImageBuilderをインポート
`Import-Module VMware.ImageBuilder`
5. 不要な出力がでないようにする。
`Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true`
実行するか否か聞かれるので、はい(Y)を選択。
6. VMwareアカウント登録(ライセンスキーを控えておきましょう)
https://www.vmware.com/jp.html
7. イメージプロファイルをダウンロード。
https://customerconnect.vmware.com/jp/patch
ESXiで検索して、こちらのファイルをダウンロードします。
`VMware-ESXi-7.0U2e-19290878-depot.zip`
※後述するネットワークドライバよりも更新が古いものを選択します。
8. vSphere7試用版(.isoファイル)をダウンロード
https://customerconnect.vmware.com/en/downloads/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/7_0
https://customerconnect.vmware.com/en/group/vmware/evalcenter?p=vsphere-eval-7
執筆時では、`VMware vSphere Hypervisor (ESXi) 7.0U3d`が最新版でした。`GOTO DOWNLOADS`をクリック。
`Download Free Trial`をクリック。(ログインしてください)
`VMware vSphere Hypervisor (ESXi ISO) image`を手動ダウンロード。
`VMware-VMvisor-Installer-7.0U3d-19482537.x86_64.iso`こんなファイルがダウンロードされると思います。
9. Community Networking Driverをダウンロード。
https://flings.vmware.com/community-networking-driver-for-esxi
10. NVMe Driverをダウンロード。
https://flings.vmware.com/community-nvme-driver-for-esxi
11. Network Driverをダウンロード。
※バージョンに注意！EXSiのバージョンに合わせること
https://flings.vmware.com/usb-network-native-driver-for-esxi
12. ドライバの取り込み。
※Documentsフォルダで操作してます
```
PS C:\Users\User\Documents> Add-EsxSoftwareDepot .\VMware-ESXi-7.0U2e-19290878-depot.zip
PS C:\Users\User\Documents> Add-EsxSoftwareDepot .\Net-Community-Driver_1.2.7.0-1vmw.700.1.0.15843807_19480755.zip
PS C:\Users\User\Documents> Add-EsxSoftwareDepot .\nvme-community-driver_1.0.1.0-3vmw.700.1.0.15843807-component-18902434.zip
PS C:\Users\User\Documents> Add-EsxSoftwareDepot .\ESXi702-VMKUSB-NIC-FLING-47140841-component-18150468.zip
```
13. イメージプロファイル情報を控える
```
PS C:\Users\User\Documents> Get-EsxImageProfile

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-7.0U2e-19290878-no-tools  VMware, Inc.    2022/01/31 7... PartnerSupported
ESXi-7.0U2e-19290878-standard  VMware, Inc.    2022/02/15 0... PartnerSupported
```
14. ドライバが取り込まれていることを確認
```
PS C:\Users\User\Documents> Get-EsxSoftwarePackage |ft -AutoSize

Name                          Version                               Vendor
----                          -------                               --
net-community                 1.2.7.0-1vmw.700.1.0.15843807         VM
vmkusb-nic-fling              1.10-1vmw.703.0.50.55634242           VM
nvme-community                1.0.1.0-3vmw.700.1.0.15843807         VM
```
15. 変数を宣言しておく。
```
$esxiImageProfileName = "ESXi-7.0U2e-19290878-standard"
$newImageProfileName = "ESXi-7.0u2e-IntelNUC11"
```
16. イメージプロファイルの作成
```
PS C:\Users\User\Documents> New-EsxImageProfile -CloneProfile $esxiImageProfileName -Name $newImageProfileName -Vendor VendorName

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   -------
ESXi-7.0U3e-IntelNUC11         VendorName      2022/06/14 0... Part...
```
17. ドライバ追加。
```
Add-EsxSoftwarePackage -ImageProfile $newImageProfileName -SoftwarePackage net-community,vmkusb-nic-fling,nvme-community

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   -------
ESXi-7.0U3e-IntelNUC11         VendorName      2022/07/10 2... Part...
```
18. イメージを書き出す
```
Export-EsxImageProfile -ImageProfile $newImageProfileName -FilePath "ESXi-7.0U2e-IntelNUC11.iso" -ExportToIso -NoSignatureCheck
```
※エラーがでる場合、以下のコマンドでUSBドライバを対象外とする。
```
PS C:\Users\User\Documents> Remove-EsxSoftwarePackage -ImageProfile $newImageProfileName -SoftwarePackage net-community,nvme-community,vmkusb-nic-fling

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-7.0U3e-IntelNUC11         VendorName      2022/07/10 2... PartnerSupported
```
`ESXi-7.0U3e-IntelNUC11.iso`というファイルが出来上がる。

# Rufusを使ってUSBに書き込む
下記のページを参考にしました。
https://rufus.ie/ja/#google_vignette

# ESXiをNUCにインストールする
1. 作成したUSBメモリをNUCに指します。
2. NUCを起動します。
3. 起動中にF2キーを押してBIOS設定画面が開かれます。
4. Bootタブ-> BootPriority-> Boot USB Devices Firstにチェックして反映。
5. NUCが再起動され、ESXiのインストールが始まります。しばらく待ちます。
6. Welcome to the VMware〜が出てきたらEnter
7. End User License Agreementが出てきたらF11
8. インストールディスクを聞かれたら、SSDを選択
9. Please Select a keyboard layoutはJapaneseを選択
10. rootパスワードを何にするか聞かれるので入力（確認のため2回入力）
11. インストールが開始します
12. インストールが完了したら、USBを抜いて再起動します
13. 再起動してきたら、DHCPでESXiに接続するためのURLが表示されます。

以上でインストール完了です。

# その他の参考サイト
### BIOSアップデート
- https://qiita.com/m-tmatma/items/3735e0de8201be304050
- https://www.pizaman.com/entry/nuc-f7-bios-update/
### BIOS設定
- https://www.slideshare.net/yukikawamitsu/20210922-250264836
### vSphere Hypervisor(ESXi)カスタムイメージ作成
- https://zenn.dev/gosarami/articles/37c489724d910249f0c8
- https://natsuyo.net/entry/2022/02/18/135729
- https://tekunabe.hatenablog.jp/entry/2020/07/11/exsi70b_nuc_10th
- https://github.com/tanzu-japan/ouchi-cloud/blob/main/vol3/02_esxi_custom_installer.md
- https://kenkino.hatenablog.jp/entry/2022/03/01/001350

- https://soji256.hatenablog.jp/entry/2020/04/28/090814
- https://qiita.com/shirok/items/ffc4a04e6891ddc8dee2
- https://communities.vmware.com/t5/Japanese-Discussions/ESXi無償ライセンスキーの有効期限/td-p/2819410
### vSphere7参考書籍
- https://book.impress.co.jp/books/1120101062