今回は Kickstart を使用して ESXi の自動インストールを行います。
なお、今回は以下記事の続きで同じ環境を使用して、PXE ブート + Kickstart の実行を行います。
前提
・iPXE + PXE ブート環境 が既に構築済み (dnsmasq + httpd + ipxe.efi + menu.ipxe)
・Kickstart 用の ks.cfg を HTTP で取得し、インストールを自動化
・Nested ESXi 8.0 (UEFI PXE) のインストールが完了し、ネットワーク設定や SSH の
有効化などの初期設定を済ませた状態を作る
<大まかな処理の流れ>
1. PXE ブート → iPXE → menu.ipxe
-> ネットワーク経由で iPXE が起動し、メニュー (menu.ipxe) が表示される。
2. ESXi ローダー (bootx64.efi) の読み込み
-> 選択した ESXi のローダー (bootx64.efi) がロードされ、起動に必要な boot.cfg
が読み込まれる。
3. Kickstart スクリプト (ks.cfg) の読み込み・自動インストール
-> boot.cfg に指定されたカーネルオプション (kernelopt=) により、ESXi の
起動過程で ks.cfg を取得し、自動インストールが実行される。
Kickstart スクリプトの作成 (サンプル)
# ks.cfg
# ライセンスに同意
vmaccepteula
# root パスワード (プレーンテキスト (暗号化も可))
rootpw "VMware1!"
# インストール先指定: --firstdisk は最初のディスクを使用
# --overwritevmfs は既存のVMFSがあっても上書きする
install --firstdisk --overwritevmfs
# キーボードタイプ
keyboard Japanese
# DHCP の場合
network --bootproto=dhcp --device=vmnic0
# インストール後、自動で再起動
reboot
# %firstboot セクション: インストール完了直後に実行するスクリプト (BusyBox)
%firstboot --interpreter=busybox
# SSH 有効化
vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh
# Shell 有効化
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell
# DNS サフィックスの追加
esxcli network ip dns search add --domain home.com
スクリプトの内容については、以下の公式ドキュメントを参考にして下さい。
Kickstart 用のファイル配置
Kickstart スクリプト ks.cfg を配布するために、HTTP サーバー上にファイルを配置します。
今回は httpd を使用し、/var/www/html/ks ディレクトリを作成してスクリプトを格納します。
mkdir -p /var/www/html/ks
vi /var/www/html/ks/ks.cfg
ESXi に Kickstart を認識させる
/var/www/html/esxi80u3/boot.cfg を例に修正
ESXi ローダーが起動する際に読み込む boot.cfg に、Kickstart スクリプトのパス
(ks=http://…) をカーネルオプションとして追記する必要があります。
そのため、boot.cfg の kernelopt= 行に ks=http://192.168.1.70/ks/ks.cfg を追記
します。
bootstate=0
title=Loading ESXi installer
timeout=5
prefix=http://192.168.1.70/esxi80u3/
kernel=b.b00
kernelopt=runweasel cdromBoot ks=http://192.168.1.70/ks/ks.cfg
modules=jumpstrt.gz --- useropts.gz --- features.gz --- k.b00 ............
build=8.0.3-0.0.24022510
updated=0
複数バージョンの boot.cfg を一括修正する方法
iPXE 環境で複数バージョンの ESXi を同居させている場合、ディレクトリごとに存在する
boot.cfg をすべて手動で修正するのは面倒です。
今回の環境では複数バージョン ESXi を用意しているため以下のような構造となっています。
/var/www/html
├── esxi80ga
│ ├── boot.cfg
│ └── ...
├── esxi80u1
│ ├── boot.cfg
│ └── ...
├── esxi80u2
│ ├── boot.cfg
│ └── ...
└── esxi80u3
├── boot.cfg
└── ...
上記構造においては、以下コマンドを実行することで一括で変更することが可能です。
cd /var/www/html
# esxi80u3/esxi80u2/esxi80u2/esxi80ga ディレクトリ配下の boot.cfg に追記
for d in esxi80u3 esxi80u2 esxi80u2 esxi80ga; do
sed -i '/^kernelopt=/ s/$/ ks=http:\/\/192.168.1.70\/ks\/ks.cfg/' "$d/boot.cfg"
done
動作確認
PXE ブート実行後に Kickstart スクリプトが読み込まれてる様子が確認できます。

警告メッセージが出たとしても、放っておけば勝手に進んでくれます。

以下のメッセージが表示されるが、勝手に再起動もしてくれます。
(特に Enter 押さなくても良い)

再起動後、スクリプトの記載した設定が反映されていれば OK です。