Pocket

VMware ESXiを自動インストールする際、設定用のスクリプトやOVAファイル等をCD-ROM(DVD-ROM)に入れておいて、それをESXiインストール後にデータストア等にコピーしたいと思うときがあるだろう。
その際の手法について記述する。

ESXiのKickstartでCD-ROMからファイルをコピーする場合、「%post」に記述する方法と「%firstboot」に記述する方法の2通りある。
どちらでも記述の方法はそう変わらないが、応用性で言うと「%firstboot」への記述の方が優れているように思える。

以下に、「%post」「%firstboot」それぞれでの記述例を記載する。
なお、以下例でコピーはCD-ROMの「/work」フォルダをまるごとコピーするようにしている。

1.「%post」への記述

「%post」への記述の場合、以下の例のように記述することでCD-ROMからファイルをコピーすることが可能となる。

●ks.cfg

#
# Sample scripted installation file
#
# Accept EULA
vmaccepteula
# Set root password
rootpw password
#Install on local disk overwriting any existing VMFS datastore
install --firstdisk --overwritevmfs
# Network configuration
network --bootproto=dhcp --device=vmnic0
# Reboot after installation completed
reboot
%post --interpreter=busybox
cp -r /vmfs/volumes/CDROM/WORK/ /vmfs/volumes/datastore1/

で、ここで問題なのが「%post」で指定した場合、そのスクリプトを実行させる事が出来なかった事だ。
スクリプトの実行コマンドを「%post」「%firstboot」どちらに記述しても正常に実行されないため、『ただファイルを設置、配布する』という目的であればこちらを採用すると良い。

2.「%firstboot」への記述

「%firstboot」への記述の場合、以下の例のように記述する。

●ks.cfg

#
# Accept EULA
vmaccepteula
# Set root password
rootpw password
#Install on local disk overwriting any existing VMFS datastore
install --firstdisk --overwritevmfs
# Network configuration
network --bootproto=dhcp --device=vmnic0
# Reboot after installation completed
reboot --noeject
%firstboot --interpreter=busybox
vmkload_mod iso9660
/sbin/vsish -e set /vmkModules/iso9660/mount mpx.vmhba32:C0:T0:L0
cp -r /vmfs/volumes/CDROM/WORK/ /vmfs/volumes/datastore1/
reboot

ここでポイントになるのが、12行目と15、16行目。

「%firstboot」はインストール後最初に起動した際に行われる動作となることから、ディスクをリジェクトされるとファイルをコピーすることができなくなる。
そのため、12行目でリジェクトをさせないように記述している。

さらに、「%firstboot」は一度再起動されているため、そのままではディスクをマウントしてくれない。このため、15、16行目で再度ディスクをマウントさせている。
こちらの手法であれば、ファイルコピー後にスクリプトを実行させることが出来る。

なお、どちらの手法を採用しても発生する問題点としては、以下の点が挙げられる。

  1. CD-ROMのファイルが全て大文字として扱われてしまうため、包括的にコピーするとコピーしたファイルが全て大文字になる
  2. CD-ROMからコピーした場合、何故か文字数に制限がある。(拡張子3文字以内?)
  3. 「/vmfs/volumes/」配下のフォルダではない場所にコピーした場合、再起動するとファイルが削除されてしまう

この辺りについては、ks.cfgで一個一個のファイルを名前指定でコピーしたり、コピー後リネームする、ファイルを移動する等で対処出来る。

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*