2022年1月22日土曜日

Kickstartを使ってESXiを自動インストールする

自宅でNested ESXiの環境を構築し、vCenter Serverを頻繁にインストールして検証などを行っている。ESXiは設定項目が多くないので、インストール自体はそこまで時間を要するものではないが、効率よくインストールできるよう、Kickstart (キックスタート) を使ってESXiのインストールの自動化を試してみた。

なお、KickstartはRed Hat系のLinuxディストリビューションでも同様の機能を有しており、大まかな使い方としては同じとなるが、細かいところで差異があるので注意。

Red Hat系のLinuxディストリビューションのKickstartの使い方は、以下記事を参照いただきたい。

環境

Kickstartの検証はESXi 6.7上に構築したESXi 6.7 (Nested ESXi) で実施した。注意事項として、Nested ESXiを構築する場合、デフォルトで有効となっているUEFIセキュアブートを無効にすること。UEFIセキュアブートが有効の場合、初回起動後に実行する%firstbootに記載したコマンド実行に失敗するので注意。

Kickstart用のファイルの配置先はQNAP NASを用いることとし、接続プロトコルはNFSを利用する。なお、NFS v4のみ有効にすると失敗するため、必ずNFSサーバ側でNFS v3を有効にすること。

手順

1. Kickstartファイル (ks.cfg) を作成

Kickstartは、インストール情報を定義したKickstartファイルと呼ばれるファイルを読み込ませることで自動インストールを実現する。このファイルは通常ks.cfgというファイル名で作成をするのが一般的となるが、ファイル名は任意で設定して問題ない。

Kickstartファイルは、インストール時に各種設定を定義するためのコマンドやオプションが用意されている。詳細は公式マニュアルを参照いただきたいが、最低限必要となるコマンドについては、以下表にて説明する。

設定項目 設定コマンド 説明
利用規約 (EULA) への同意 vmaccepteula 利用規約への同意を自動で行う設定。
rootパスワード rootpw 平文 (オプションなし) またはハッシュ化 (--iscrypted) した文字列でパスワードを指定できる。ハッシュ化したパスワードは、インストール済みのLinux環境の/etc/shadowから抽出すると楽。
インストール設定 install インストール対象のディスクを選択する設定。--firstdiskでローカルディスクの最初のディスクを選択し、--overwritevmfsで既存のVMFS領域を上書きする。VMFS領域を残したり、そもそも作成しないといったオプションも設定可能。
キーボードレイアウト keyboard キーボードレイアウトを指定。Japaneseを選んでおけば問題ない。
ネットワーク network ホスト名やIPアドレスなどの設定。Red Hat系のnetworkの設定方法と同様となる。
インストール後の動作 reboot インストール後に自動で再起動かける場合に指定。デフォルトで再起動時にDVDのイジェクトが行われるが、イジェクトしない場合は、--noejectを付与する。
初回起動後のコマンド実行 %firstboot ESXiインストール後の初回起動後にコマンドを実行させる。--interpreter=busyboxを付けることで、通常のESXi Shellによるコマンド実行が可能となる。

以下に私が実際に使用しているKickstartファイルを例として記載する。

# Accept the VMware End User License Agreement
vmaccepteula

# Set the root password for the DCUI and Tech Support Mode
rootpw mypassword
#rootpw --iscrypted XXXX~(省略)~XXXX

# Install on the first local disk available on machine
install --firstdisk --overwritevmfs

# Keyboard type
keyboard Japanese

# Set the network
#network --bootproto=dhcp --device=vmnic0
network --bootproto=static --ip=192.168.11.161 --netmask=255.255.255.0 --gateway=192.168.11.31 --nameserver=192.168.11.61,192.168.11.62 --device=vmnic0 --hostname=t1161esxi

# Reboot after installation
reboot

%firstboot --interpreter=busybox

# Enable ssh
vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh

# Enable ESXi Shell
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell

# Suppress Shell Warning
esxcli system settings advanced set -o /UserVars/SuppressShellWarning -i 1

# Enable NTP
echo 'server 192.168.33.23 iburst' >> /etc/ntp.conf
chkconfig ntpd on
/etc/init.d/ntpd start

# Disable IPv6
esxcli system module parameters set -m tcpip4 -p ipv6=0 

reboot

2. NFSサーバにKickstartファイルを配置

作成したKickstartファイルは、OSインストール時に読み込ませる必要がある。いくつか方式はあるが、今回はNFSサーバにKickstartファイルを配置して、ネットワーク経由で読み込みさせることにする。

NFSサーバの構築は本題とは関係がないため割愛するが、今回はQNAP NASをNFSサーバとして使用することにした。前述したとおり、NFS v4では失敗するためNFS v3を有効にすること。

配置パスは以下となる。Red Hat系とパスの構文が微妙に異なるので注意。

nfs://192.168.11.13/Public2/ks/ks_esxi.cfg

3. OSインストールメディアで起動

通常通りESXiのインストールメディアにて起動し、最初の画面に「Shift + o (シフト + オー)」を押すと、インストールパラメータを指定する画面に遷移する。「Shift + 0 (シフト + ゼロ)」ではないので注意。

4. インストールパラメータでKickstartファイルを指定

インストールパラメータでは、以下の通り、ksのパラメータを追記する。くどいが、Red Hat系とパスの構文が微妙に異なるので注意。

cdromBoot runweasel ks=nfs://192.168.11.13/Public2/ks/ks_esxi.cfg

パラメータ追記後、「Enter」を押してインストールを開始する。

5. 自動インストール開始

Kickstartによる自動インストールが成功した場合は、以下画面のように「Reading installation script」といった表示がされ、自動的にインストールが進むはずだ。

インストール完了後、「ESXi 6.7.0 has been installed successfully」と表示され、少し待つと自動でESXiが再起動する。

6. 初回起動後のスクリプト実行

初回起動後は、%firstbootで指定されたコマンドが実行される。私のKickstartファイルでは、IPv6無効化の反映のために%firstbootの最後にrebootを設定しているため、自動的にESXiが再起動する。

再起動、いつものESXiのDCUIが表示されればインストール完了となる。

7. インストール後の確認

インストール完了後、SSHでログインし以下であることを確認した。Kickstartにより問題なく初期設定がされていることが確認できた。

  • SSHが有効化されていること
  • ESXi Shellが有効化されていること
  • SuppressShellWarningが1で設定されていること
  • ntpdサービスが起動し、NTPサーバと同期していること
  • IPv6が無効化されていること
[root@t1161esxi:~] chkconfig SSH
SSH                     on

[root@t1161esxi:~] chkconfig ESXShell
ESXShell                on

[root@t1161esxi:~] esxcli system settings advanced list -o /UserVars/SuppressShe
llWarning
   Path: /UserVars/SuppressShellWarning
   Type: integer
   Int Value: 1
   Default Int Value: 0
   Min Value: 0
   Max Value: 1
   String Value:
   Default String Value:
   Valid Characters:
   Description: Don't show warning for enabled local and remote shell access

[root@t1161esxi:~] chkconfig ntpd
ntpd                    on
[root@t1161esxi:~] ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.33.23   133.243.238.164  2 u   46   64   37    0.428   -0.242   0.617

[root@t1161esxi:~] esxcli system module parameters list -m tcpip4
Name                 Type  Value  Description
-------------------  ----  -----  --------------------------------
ipportIscsiReserved  int          # of provisioned H/W iSCSI ports
ipv6                 int   0      Enable/Disable IPv6

ここからさらにvCenter Server Appliance (vCSA) もCLIベースでインストールすることで、最短でvSphereの検証環境を構築することができる。vCSAのCLIベースでのインストール手順は、以下を参照いただきたい。

参考

更新履歴

  • 2021/6/1 新規作成
  • 2022/1/22 Kickstartファイルを配置するNFSサーバーはNFS v3を有効にする必要がある旨追記

0 件のコメント:

コメントを投稿

人気の投稿