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でも起動してインストールスクリプトが実行され、記載した内容の設定が自動で行わていることを確認しています。
これで、最低限ネットワークとSSHの設定が済んだ状態で起動させることができるようになりました。SSHさえできるようになれば、後の細かい設定はコマンドラインや自動化ツールで行えるので、あまり複雑なことはせず利用しています。