ESXiのインストール自動化(kickstartスクリプトの編集・ISO作成)

ESXiの構築で、何台もあるサーバーを1台ずつコンソール画面で設定するのは手間がかかってしまいます。 今回、kickstart インストールスクリプトによる作業の自動化と、それをデフォルトの動作とするためにカスタムISOの作成を行いました。

環境

  • 作業 ESXi バージョン: ESXi 7.0
  • 作業環境: Ubuntu 20.04 LTS

カスタムISOの作成

元のISOイメージのコピー

My VMware よりダウンロードしたESXiのインストールISOをマウントし、内容を編集するために任意のディレクトリへコピーします。コピーが完了すれば、元のイメージはもう利用しないのでアンマウントして大丈夫です。

# mount -o loop ./VMware-VMvisor-Installer-7.*.x86_64.iso /mnt/esxi
# cp -r /mnt/esxi /tmp/esxi
# umount /mnt/esxi

インストールスクリプト(ks.cfg)の用意

kickstart のインストールスクリプトである ks.cfg を、コピー先ディレクトリ内に用意します。 rootpw で指定するroot パスワードについては、平文でも可能ですが今回はISOに含めることもあり、暗号化して入力しました。パスワードの生成はmkpasswd コマンドで行っています。

$ mkpasswd --method=sha-512

/tmp/esxi/ks.cfg

# VMware license agreementへの同意
vmaccepteula

# root パスワードの設定
rootpw --iscrypted $6$zzw94gt90Tm$dtfuCgjBf1ambua0qxSnk/.rVVXOCM85iaJ/l384YYgMU.CZIP3OySqUQzQqaBGHqFUeNB1nfxv6W.EDzMP8n1

# 一番目のディスクへのインストールを行い、既にvmfsが作成されている場合は上書きする
install --firstdisk --overwritevmfs

# キーボードの配列設定
keyboard 'US Default'

# vmnic0のインタフェースをDHCPで自動設定する
network --bootproto=dhcp --device=vmnic0

# 完了後にリブートする
reboot

# 初回起動時の処理
%firstboot --interpreter=busybox

# SSHとShellを有効化し、起動
vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell

ブートパラメータの変更

起動時にこのインストールスクリプトを実行するため、boot.cfg を編集してブートパラメータの変更を行います。 BIOS環境とUEFI環境で boot.cfg の場所が異なるため、両方を修正します。

# sed -i -e "s/kernelopt=.*/kernelopt=ks=cdrom:\/KS.CFG/g" /tmp/esxi/boot.cfg
# sed -i -e "s/kernelopt=.*/kernelopt=ks=cdrom:\/KS.CFG/g" /tmp/esxi/efi/boot/boot.cfg

ks.cfg の配置と boot.cfg の編集が完了したので、改めてISOイメージ化します。

ISOの作成

# mkisofs -relaxed-filenames -J -R -b isolinux.bin -c boot.cat \
    -no-emul-boot -boot-load-size 4 -boot-info-table \
    -eltorito-alt-boot -e efiboot.img -boot-load-size 1 \
    -no-emul-boot -o custom_esxi.iso /tmp/esxi

動作確認

作成した ISOイメージをVMware Fusion で動作確認しました。BIOSでもUEFIでも起動してインストールスクリプトが実行され、記載した内容の設定が自動で行わていることを確認しています。

f:id:HichTakk:20200830142901p:plain

これで、最低限ネットワークとSSHの設定が済んだ状態で起動させることができるようになりました。SSHさえできるようになれば、後の細かい設定はコマンドラインや自動化ツールで行えるので、あまり複雑なことはせず利用しています。

参考

docs.vmware.com