ESXi のインストールを自動化する

最終更新日

はじめに

新しいバージョンを試してみたい時や、検証用に特定のバージョンが必要になった時など、本番用環境以外でESXi を物理サーバーにインストールする機会は意外とある。ESXi のインストールそれ自体は(正直Hyper-V よりも格段に)楽であるが、数が増えてくると面倒である。本番用環境の構築用途として、VMware では、Enterprise Plus エディションから使用できるAuto Deploy という機能を用意しているものの、あくまでも本番用途で使うもので、DHCP サーバーの用意など、環境の構築が自動化の恩恵よりも手間であり、正直気軽に使用するものではない。他には、VMware Cloud Foundation のSDDC Manager があるが、これも検証用環境構築には向かない。理由としては、必要なvSphere 以外の製品がManagement/Workload Domain として作成されるうえに、バージョンが決め打ちで固定されているためである(そもそも検証用にvCF とはいくらなんでも豪華すぎる)。

ということで、もっと簡単に、気軽にESXi をインストールする方法を、みんな大好きWilliam Lam 先生が「Automated ESXi Installation to USB using Kickstart」にて紹介されていたため、さっそく試してみた。

1. USB インストールメディアの用意

今回は物理サーバーにみんな大好きIntel NUC、インストールメディア作成にRufus を使用した。

Rufus でインストールメディアを作成する場合の注意点として、上記ブログのコメント欄にもあるが、パーティション構成をGPT ではなくMBR とするとうまくいく。

2. BOOT.CFG ファイルの編集

kernelopt=cdromBoot runweasel
kernelopt=ks=usb:/KS.CFG
に書き換える。この後作成するKS.CFG スクリプトをインストール時に使用するためである。

bootstate=0
title=Loading ESXi installer
timeout=5
prefix=
kernel=/b.b00
kernelopt=ks=usb:/KS.CFG

3. KS.CFG ファイルの作成

KS.CFG ファイルをUSB メモリのroot 配下に作成する。以下は最低限の設定であり、IP アドレス等は適宜入れ替えて使用する。ドキュメントhttps://www.virtuallyghetto.com/vmware-kickstart が参考になる。下記に、自分用にカスタマイズしたサンプルスクリプトを載せておく。

vmaccepteula
install --firstdisk=usb --overwritevmfs --novmfsondisk
reboot
 
network --bootproto=static --ip=172.16.10.21 --netmask=255.255.255.0 --vlanid=10 --gateway=172.16.10.254 --hostname=esxi-1.test.local --nameserver=172.16.10.10 --addvmportgroup=1
rootpw VMware1!
 
%firstboot --interpreter=busybox
 
 
# enable & start SSH
vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh
 
# enable & start ESXi Shell
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell
 
# Suppress ESXi Shell warning
esxcli system settings advanced set -o /UserVars/SuppressShellWarning -i 1

4. インストール

これで、USB メモリをサーバーに刺して電源をON するだけで、最低限の設定が完了した状態でESXi が立ち上がる。

スクリプトが読み込まれていることがわかる。

まとめ

本手法では正直なところ自動化できる部分はそこまで多くはない(そもそもESXi 自体のインストールが簡単なためである)。一方で、起動してからのキーボード操作が必要なくなるため、スクリプトの中のIP アドレスの変更以外何も考えなくて済むのは大きい。簡単に試すことができるので、是非チャレンジしてみてはいかがだろうか。

baba

無職です。 投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。と思いましたが現在どこにも所属してないので好き放題書きます。