【環境構築】パーツ購入からESXi7.0サーバ作成してみた

# はじめに
私は2021年に新卒でインフラエンジニアとして働いています。
その中で、個人的な学習としてESXiのサーバを構築しました。
自分専用のESXiがあると、何かと勉強の幅が広がるので、初級インフラエンジニアの方は持っておくことをおすすめします！

私自身初めての自作PCからの、初めてのESXiインストールです。
初めてだらけだったので、間違っている部分があると思いますが、参考程度に眺めてみていただければと思います。

# 本記事の対象者
- 初めて自作PC（サーバ）を作成する人
- 自作PC（サーバ）に興味がある人
- ESXiのインストールをしようとしている人
- 初心者インフラエンジニアで暇な人

# 作成の要望
私が自作PCを作成するにあたり、欲しいと思った要望です。
- 自作サーバは物理的に小さくしたい
- ESXiを使用した複数機能を持つサーバを作成したい
- 複数の仮想サーバを立ててもある程度耐えられる処理能力が欲しい

ということを考えました。
これらから、実際にパーツを購入するための要件を以下のように絞りました。
- マザーボード（MB）の規格はMini-ITX
- PCケースもMini-ITX対応の最小のもの
- ESXi7.0のハード要件を満たす

それでは、実際に購入した部品をまとめます。

# 購入品
合計金額：¥46,767（クーポン未使用で¥51,967）
※購入は全て2022/9/26~2022/10/1に行いました。
※その他、キーボード / マウス / モニター / 各種ケーブル等は家に余っていたものを使用

![5EEEBFCC-D175-435C-AA41-3544C723E2EE.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/a324157d-b727-5d17-318c-acafcccff68f.jpeg)
- マザーボード
製品名：GIGABYTE H610I DDR4(H610 1700 Mini-ITX)
購入場所：メルカリ
状態：中古
価格：13,000円（1,300OFFクーポン使用）

- CPU
製品名：Intel Core i3 12100 BOX
購入場所：じゃんぱら
状態：未使用・未開封
価格：18,750円（100OFFクーポン使用）

- RAM
製品名：G.SKILL F4-2666C19D-16GNT
購入場所：ドスパラ
状態：新品
価格：5,390円（300OFFクーポン使用）

- DISK
製品名：SUNEAST　320GB
購入場所：Yahoo!ショッピング
状態：新品
価格：2,950円（500OFFクーポン使用）

- ケース
製品名：RGEEK PCケース
購入場所：Yahoo!ショッピング
状態：新品
価格：7,378円（3,000OFFクーポン使用）

- DC-ATX-160W
製品名：Yiteng
購入場所：Amazon
状態：新品
価格：1,999円

- ACアダプタ
製品名：12V 10A 120W 汎用ACアダプター
購入場所：Amazon
状態：新品
価格：2,500円

組み立ては省きます。
次からは組み立てして、起動確認後からのお話です。

# ESXi7.0インストール
まず、ESXi7.0はインストーラーイメージを作成する必要があります。
インストーラーイメージを作成後に、作成した自作サーバにインストールします。

## ESXi7.0インストーラーイメージ作成手順
### 1. 準備
1. インストーラーイメージを作成するWindowsPCで、作業用フォルダを用意する
わかりやすくて長くなければなんでもいい（例：D:\ESXi-Customizer）
※パスが長すぎるとエラーになる可能性があるので、できるだけ短くすること

2. NICドライバのダウンロード
前提として、ESXi7.0の場合のNICドライブである
[Community Networking Driver for ESXiページ](https://flings.vmware.com/community-networking-driver-for-esxi "https://flings.vmware.com/community-networking-driver-for-esxi")から、Community Networking Driver for ESXiをダウンロードする。

3. ダウンロードファイルの解凍
解凍後，vib20/net-community配下にある VMW_bootbank_net-community_1.2.*.0-1vmw.700.1.0.15843807.vib ファイルのみをaで作成したフォルダに格納する。
使用したVIBファイル：
VMW_bootbank_net-community_1.2.7.0-1vmw.700.1.0.15843807.vib

    <details><summary>NICドライバの選定方法</summary><div>
    NICドライバ持たない公式からダウンロードできるisoイメージを使用すると、「No Network Adapters」エラーが出る。
    
    ![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/85098dee-2e68-f5ee-4b62-05b15bbeeede.png)
    **NICの確認**
    上記画面で、以下を実行することで、ESXi ダイレクト コンソール インターフェースから使用可能なNICの情報を確認することができる
    ```powershell
    Alt + F1  << 開始
    
    localhost.localdmain login: root    << rootと入力
    password:     << 空欄
    
    [root@localhost:~] lspci -v | grep "Class 0200" -B 1
    0000:00:1f.6 Network controller Ethernet controller: Intel Corporation Ethernet Connection (17) I219-V
             Class 0200: 8086:1a1d
    
    Alt + F2  << 終了
    ```
    **結果**
    以下であることが確認できました。
    
    |種類|詳細 |
    |--|:--|
    | モデル |Ethernet Connection (17) I219-V  |
    |ブランド名 |Intel Corporation  |
    |VID  |8086  |
    |DID  |1a1d  |
    
    **結論**
    ESXi6.5, 6.7では、Ethernet Connection (17) I219-Vに対応できるNICドライバがありませんでした。
    
    ESXi7.0は[Community Networking Driver for ESXi](https://flings.vmware.com/community-networking-driver-for-esxi)で対応可能であることが分かったので、こちらを使用しました。
    
    ![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/a2006302-52ce-7307-ad0b-0e077afd02a6.png)
    
    </div></details>

4. カスタムイメージ自動作成スクリプトをダウンロード
[Github](https://github.com/VFrontDe-Org/ESXi-Customizer-PS "https://github.com/VFrontDe-Org/ESXi-Customizer-PS")をダウンロードして、ESXi-Customizer-PS.ps1のみをaで作成したフォルダに格納する。
実際に使用したpsファイル：ESXi-Customizer-PS.ps1

5. 空のUSBメモリ
作成したカスタムイメージをUSBメモリに展開してインストールメディアにするために必要である。ツールで作成する際に、中身が削除されるので、消えてほしくないファイル等は移動させておきます。

### 2. VMwarePowerCLIをインストール
VMwarePowerCLIとは、WindowsPowerShellにコマンドからインストールをして、VmwareをCLI操作（vCenter、ESXiなど複数のバックアップを取得等）することができる。

1. インストール
WindowsPowerShellを管理者権限で開き、以下実行する。
※結構時間かかりました
    ```powershell
    PS C:\Windows\system32> Install-Module -Name VMware.PowerCLI -Scope CurrentUser
    
    続行するには NuGet プロバイダーが必要です
    PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet
    プロバイダーが必要です。NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または
    'C:\Users\futak\AppData\Local\PackageManagement\ProviderAssemblies' に配置する必要があります。'Install-PackageProvider
    -Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGet プロバイダーをインストールすることもできます。今すぐ
    PowerShellGet で NuGet プロバイダーをインストールしてインポートしますか?
    [Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
    
    信頼されていないリポジトリ
    信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit
    ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery'
    からモジュールをインストールしますか?
    [Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y
    ```

1. セキュリティポリシー変更
CurrentUserがVMwarePowerCLIを実行できるようセキュリティポリシーを変更する
    ```powershell
    PS C:\Windows\system32> Set-ExecutionPolicy Unrestricted
    
    実行ポリシーの変更
    実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
    で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
    [Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y
    ```
1. セキュリティポリシー確認
CurrentUserが「Unrestricted」になっていればOK
※RemoteSignedでなければ問題ない
    ```powershell
    PS C:\Windows\system32> Get-ExecutionPolicy -List
    
            Scope ExecutionPolicy
            ----- ---------------
    MachinePolicy       Undefined
       UserPolicy       Undefined
          Process       Undefined
      CurrentUser    Unrestricted
     LocalMachine    Unrestricted
    ```
1. VMwarePowerCLI 確認コマンド
下記コマンドから、バージョン12.7.0であることが確認できる
    ```powershell
    PS C:\Windows\system32> Get-PowerCLIVersion
    
    PowerCLI Version
    ----------------
       VMware.PowerCLI 12.7.0 build 20091289
    ---------------
    Component Versions
    ---------------
       VMware Common PowerCLI Component 12.7 build 20067789
       VMware Cis Core PowerCLI Component PowerCLI Component 12.6 build 19601368
       VMware VimAutomation VICore Commands PowerCLI Component PowerCLI Component 12.7 build 20091293
    ```

ExecutionPolicy（PoweeShellの実行ポリシー）の詳細については下記リンクを参照
- [【PowerShell】権限（実行ポリシー）の設定をする。](http://www.code-magagine.com/?p=3726)
- [PowerShell の Set-ExecutionPolicy 設定時のスコープ対処](https://tech.guitarrapc.com/entry/2016/06/04/035324)

### 3. カスタムインストーラーイメージ作成
1. 準備で作成したフォルダに移動
    ```powershell
    PS C:\Windows\system32> cd D:\ESXi-Customizer
    ```
1. 準備したフォルダの中身に不備がないことを確認
    ```powershell
    PS D:\ESXi-Customizer> dir
    
        ディレクトリ: D:\ESXi-Customizer
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----        2022/08/12      4:11          22755 ESXi-Customizer-PS.ps1
    -a----        2022/03/10     22:27         229174 VMW_bootbank_net-community_1.2.7.0-1vmw.700.1.0.15843807.vib
    ```
1. offline bundleの作成
    ```powershell
    .\ESXi-Customizer-PS.ps1 -ozip -v70 -pkgDir <NICドライバ保存フォルダ> -nsc
    ```
    実際のコード↓
    ```powershell
    PS D:\ESXi-Customizer> .\ESXi-Customizer-PS.ps1 -ozip -v70 -pkgDir D:\ESXi-Customizer\ -nsc
    
    This is ESXi-Customizer-PS Version 2.8.2 (visit https://ESXi-Customizer-PS.v-front.de for more information!)
    (Call with -help for instructions)
    
    Logging to C:\Users\kobat\AppData\Local\Temp\ESXi-Customizer-PS-30640.log ...
              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.
    
    Running with PowerShell version 5.1 and VMware PowerCLI version 12.7.0 build 20091289
    
    Connecting the VMware ESXi Software depot ... [OK]
    
    Getting Imageprofiles, please wait ... [OK]
    
    Using Imageprofile ESXi-7.0U3g-20328353-standard ...
    (Dated 09/01/2022 00:00:00, AcceptanceLevel: PartnerSupported,
    The general availability release of VMware ESXi Server 7.0U3g brings whole new levels of virtualization performance to datacenters and enterprises.)
    
    Loading Offline bundles and VIB files from D:\ESXi-Customizer\ ...
       Loading D:\ESXi-Customizer\VMW_bootbank_net-community_1.2.7.0-1vmw.700.1.0.15843807.vib ... [OK]
          Add VIB net-community 1.2.7.0-1vmw.700.1.0.15843807 [OK, added]    << ##ここでドライバが追加されている
    
    Exporting the Imageprofile to 'D:\ESXi-Customizer\ESXi-7.0U3g-20328353-standard-customized.zip'. Please be patient ...
    
    All done.   << ##これが確認できればOK
    ```
1. isoイメージ作成
    ```powershell
    .\ESXi-Customizer-PS.ps1 -izip <3で作成できたzipファイルのパス> -v70 -nsc
    ```
    実際のコード↓
    ```powershell
    PS D:\ESXi-Customizer> .\ESXi-Customizer-PS.ps1 -izip .\ESXi-7.0U3g-20328353-standard-customized.zip -v70 -nsc
    
    This is ESXi-Customizer-PS Version 2.8.2 (visit https://ESXi-Customizer-PS.v-front.de for more information!)
    (Call with -help for instructions)
    
    Logging to C:\Users\kobat\AppData\Local\Temp\ESXi-Customizer-PS-30640.log ...
    
    Running with PowerShell version 5.1 and VMware PowerCLI version 12.7.0 build 20091289
    
    Adding base Offline bundle .\ESXi-7.0U3g-20328353-standard-customized.zip ... [OK]
    
    Getting Imageprofiles, please wait ... [OK]
    
    Using Imageprofile ESXi-7.0U3g-20328353-standard-customized ...
    (Dated 09/01/2022 00:00:00, AcceptanceLevel: PartnerSupported,
    The general availability release of VMware ESXi Server 7.0U3g brings whole new levels of virtualization performance to datacenters and enterprises. (customized))
    
    Exporting the Imageprofile to 'D:\ESXi-Customizer\ESXi-7.0U3g-20328353-standard-customized.iso'. Please be patient ...
    
    All done.   << ##これが確認できればOK
    ```
<details><summary>エラー：Fail to create VibSigner object, Could not get string.が出た時の対処法</summary><div>

**問題・エラー**
「offline bundleの作成」や「isoイメージ作成」の際に、「Fail to create VibSigner object, Could not get string.」というエラーが出ました。

```powershell
PS D:\ESXi-Customizer> .\ESXi-Customizer-PS.ps1 -izip .\ESXi-7.0U3g-20328353-standard-customized.zip -v70

An unexpected error occurred:
Fail to create VibSigner object, Could not get string.

If requesting support please be sure to include the log file
   C:\Users\***\AppData\Local\Temp\ESXi-Customizer-PS-*****.log
```

**解決策**
コマンドに「-nsc」というオプションを付けて実行する

</div></details>

### 4. インストールメディア作成（USB）
USBメモリをインストールメディア（ブータブルUSB）にするために[Rufus](https://rufus.ie/ja/ "https://rufus.ie/ja/")を使います。

1. 最新版の[Rufus](https://rufus.ie/ja/ "https://rufus.ie/ja/")をダウンロードしてください。（下記画像は使用当時のバージョン）
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/a4898852-bdf3-5aba-2266-43cb879c45ce.png)
1. インストールメディア作成方法
    a ダウンロードした「rufus-3.**.exe」を実行する。
    b. ブートの種類のみ、「選択」から作成したisoイメージを選択する。
    c. その他の値はデフォルト値で、「スタート」を押す。
    ※出てくるポップは全てOK
    ![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/8ef7c7b8-3db6-be57-91a2-8c1459942a16.png)
1. USBを戻す方法
    a. Windows＋Rで「diskmgmt.msc」を開く
    b. 戻したいボリュームを選択して、右クリックからフォーマットを選択
    ![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/dbb76d5d-932b-db71-2312-c0c0327a9384.png)
    c. 下記画像を参考にして、OKを押す
    ![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/51222eff-4f79-d2bf-e20a-abac8f20a653.png)

## ESXi7.0インストール
### 1. OSData パーティションを指定する
ESXi7.0ではデフォルトで、OSData パーティションが最大120GBまで確保されてしまい、VMFS 領域（VM等を作成する容量）が無い・少量になってしまいます。

そこで、オプションで適切なサイズをsystemMediaSizeで指定してインストールすることが可能です。

systemMediaSizeに指定するパラメータは４種類ある
[ESXi のシステム ストレージの概要 ＞ ESXi 7.0 のシステム ストレージのサイズ](https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-474D003B-C6FB-465D-BC1B-5FD30F8E2209.html#esxi-70---1 "https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-474D003B-C6FB-465D-BC1B-5FD30F8E2209.html#esxi-70---1")
|種類|詳細 |
|--|:--|
| min |32 GB、1 台のディスクまたは組み込みのサーバ用  |
|small |64 GB、512 GB 以上の RAM を搭載したサーバ用  |
|default  |128 GB  |
|max  |使用可能なすべての容量を使用、マルチテラバイトのサーバ用  |

本件サーバは、minを使用する。

**設定手順**
1. ブータブルUSBを差して、サーバを起動した直後（下記画像で）５秒間の間に、
” Shift ＋ O ”を押下する。
    ![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/c6ba744d-b3a3-69be-551d-3c51451ec764.png)
1. 文字が入力できるので、”systemMediaSize=min”と入力後、Enterを押下する。
    ![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/b59c47cd-fbaa-2694-8ceb-88a9143c6ff8.png)

    **※失敗手順**
    ブータブルUSB内にある「boot.cfg」の設定を変更する方法もあるらしいが、うまくいかなかった
    ```powershell
    bootstate=0
    title=Loading ESXi installer
    timeout=5
    prefix=
    kernel=/b.b00
    kernelopt=runweasel cdromBoot systemMediaSize=min    << # 末尾の部分を追加
    modules=/jumpstrt.gz --- /useropts.gz --- /features.gz --- /k.b00 --- /uc_intel.b00 --- /uc_amd.b00 --- /uc_hygon.b00 --- /procfs.b00 --- /vmx.v00 --- /vim.v00 --- /tpm.v00 --- /sb.v00 --- /s.v00 --- /atlantic.v00 --- /bnxtnet.v00 --- /bnxtroce.v00 --- /brcmfcoe.v00 --- /elxiscsi.v00 --- /elxnet.v00 --- /i40en.v00 --- /iavmd.v00 --- /icen.v00 --- /igbn.v00 --- /ionic_en.v00 --- /irdman.v00 --- /iser.v00 --- /ixgben.v00 --- /lpfc.v00 --- /lpnic.v00 --- /lsi_mr3.v00 --- /lsi_msgp.v00 --- /lsi_msgp.v01 --- /lsi_msgp.v02 --- /mtip32xx.v00 --- /ne1000.v00 --- /nenic.v00 --- /netcommu.v00 --- /nfnic.v00 --- /nhpsa.v00 --- /nmlx4_co.v00 --- /nmlx4_en.v00 --- /nmlx4_rd.v00 --- /nmlx5_co.v00 --- /nmlx5_rd.v00 --- /ntg3.v00 --- /nvme_pci.v00 --- /nvmerdma.v00 --- /nvmetcp.v00 --- /nvmxnet3.v00 --- /nvmxnet3.v01 --- /pvscsi.v00 --- /qcnic.v00 --- /qedentv.v00 --- /qedrntv.v00 --- /qfle3.v00 --- /qfle3f.v00 --- /qfle3i.v00 --- /qflge.v00 --- /rste.v00 --- /sfvmk.v00 --- /smartpqi.v00 --- /vmkata.v00 --- /vmkfcoe.v00 --- /vmkusb.v00 --- /vmw_ahci.v00 --- /bmcal.v00 --- /crx.v00 --- /elx_esx_.v00 --- /btldr.v00 --- /esx_dvfi.v00 --- /esx_ui.v00 --- /esxupdt.v00 --- /tpmesxup.v00 --- /weaselin.v00 --- /esxio_co.v00 --- /loadesx.v00 --- /lsuv2_hp.v00 --- /lsuv2_in.v00 --- /lsuv2_ls.v00 --- /lsuv2_nv.v00 --- /lsuv2_oe.v00 --- /lsuv2_oe.v01 --- /lsuv2_oe.v02 --- /lsuv2_sm.v00 --- /native_m.v00 --- /qlnative.v00 --- /trx.v00 --- /vdfs.v00 --- /vmware_e.v00 --- /vsan.v00 --- /vsanheal.v00 --- /vsanmgmt.v00 --- /tools.t00 --- /xorg.v00 --- /gc.v00 --- /imgdb.tgz --- /basemisc.tgz --- /resvibs.tgz --- /imgpayld.tgz
    build=7.0.3-0.55.20328353
    updated=0
    ```
    ※ブータブルUSB内にある「boot.cfg」の設定変更により、ホスト名やIPアドレス等を設定することも可能なようです。　＞＞[Automated ESXi Installation to USB using Kickstart](https://williamlam.com/2019/07/automated-esxi-installation-to-usb-using-kickstart.html "https://williamlam.com/2019/07/automated-esxi-installation-to-usb-using-kickstart.html")

### 2. インストール
基本的には、F11またはEnterでインストールを進めていく

### 3. インストール完了後
以下設定をサーバ上で直接変更した
- IPv4アドレスを任意のアドレスのスタティックIP
- ホスト名を「ESXi7-01」

**ライセンスの割り当て**
[VMware vSphere Hypervisor 7.0 ダウンロード センター](https://customerconnect.vmware.com/ja/evalcenter?p=free-esxi7)でログインする。
「ライセンスとダウンロード」＞「ライセンス情報」＞「ライセンス キー」をコピーする。

HostClient（HTTP）から「ホスト」＞「管理」＞「ライセンス」＞「ライセンスの割り当て」から、コピーしたライセンス キーを張り付ける。
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/c9df4329-35ae-bf6c-ba2c-59293d47b20c.png)

# まとめ
PCのパーツ購入から、ESXi7.0インストールまでいかがだったでしょうか。
PCのパーツによって組み立て方法が異なると思うので、本記事では省きました。
ESXiのインストーラーイメージ作成は結構難しい気がしています。

ESXi作成に当たって参考にしたサイトをまとめておきます。
- [おうち ESXi の検討と導入＞ソフトウェア](https://qiita.com/futakuchi0117/items/569b41be396eedd75b3f#3-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2 "https://qiita.com/futakuchi0117/items/569b41be396eedd75b3f#3-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2")
- [Vmware ESXiを使って自宅Serverを立ててみた(ESXiインストール）](https://zenn.dev/em8215/articles/b2861725ec35e9 "https://zenn.dev/em8215/articles/b2861725ec35e9")
- [おうちクラウド 第3回 "仮想化基盤を作ってみよう”](https://github.com/tuna-jp/ouchi-cloud/tree/main/vol3 "https://github.com/tuna-jp/ouchi-cloud/tree/main/vol3")