PXE boot+ネットワークインストール+キックスタートを組み合わせてクラスタ環境を構築する。
最後の難関(?)FTPdも陥落したので後はbootさせてキックスタートさせるのみ。
後でWikiにまとめるが、とりあえず要点をメモしておく。
・bootの流れBIOSからPXEが呼ばれて
DHCPでアドレスを設定、同時にboot先の
TFTP(≠FTP)サーバを調べる。
↓
TFTPで
pxelinux.0vmlinuz、
initrd.imgなどを拾ってネットワークboot。
このとき、キックスタート(***.ks)ファイルの位置や接続方法もdefaultファイルから読み込む。
ksはTFTPではなくHTTPかFTPで転送する必要がある←ここではまった
↓
Linuxインストーラがksファイルをうまく読めたらkickstart開始。
ksに設定したイメージ読み取り先にアクセスできれば後はOK。
このときのDVD/CDイメージもFTPで転送するので注意。
・注意事項pxelinux.0というファイルはCentOS(RH系)独自。
debianではnetboot.tar.gzを用いる。
TFTPのルート以下のファイル配置も独特なので適宜distributionごとの設定を確認する必要がある。
CentOSでは、tftpのルート(今回は/var/lib/tftpboot)直下にinitrd.img、pxelinux.0、vmlinuzとフォルダpxelinux.cfgを配置し、pxelinux.cfg以下にloadするファイル名を記述する。
ここで一番ややこしいのは、PXEはまずpxelinux.0を読み込んで、これがpxelinux.cfg/defaultを読んでファイルのロードを行うのだがこのときのファイルの相対パスの基準がtftpのルートになっているということ。
なので、defaultでload initrd=initrd.imgなどとした場合、PXEが読みに行くフィアルは/var/lib/tftpboot/initrd.imgであって/var/lib/tftpboot/pxelinux.cfg/initrd.imgではない。
また、TFTPには認証やセキュリティという概念がないのでその点にも注意。
誤ってインストールすべきノード以外でPXEが走って暴発するのを避けるためにも、
普段はdaemonをストップしておくほうが安心だろう。最悪OSごと全滅するからだ。
DHCPdの設定ファイルに直接PXEが読みだすファイルのディレクトリを書き込む必要があるので、
市販のルータのおまけのDHCPを使おうとするとたぶん痛い目にあう。
DHCPはブロードキャストで早い者勝ちの曖昧なプロトコルなので、
スイッチの位置などを考慮すればルータ側のDHCPを止める必要はないらしいが、危ないので非推奨。
FTPサーバはvsFTPdを用いた。たしかにProFTPdよりも項目が少なくて設定しやすい。
今回の環境ではNFSやNISが連動していて危ないのでLocalユーザのFTP接続は完全に切ってある。
anonymous関連の設定はProよりVSのほうが数倍楽でわかりやすい。
もしユーザごとの細かい設定を要するならProFTPdを推薦するが、anonymousのみなら絶対vsFTPdだ。
vsFTPdのanonymousログイン時のルートディレクトリがよくわからなくて相当はまったが、
debianでは/etc/passwdのftpのホームディレクトリとなる。/etc/vsftpd.confでは変えられないので注意。
・その他
多少気持が悪いが、hosts.allowに何も書いていないのに外部からvsFTPdに接続できてしまう点。
TFTP(atftpd)なんかはクライアントも許可しないと接続できなかったのに気味が悪い。
クラスタに気を取られすぎてレイテンシカウンタが全くできていない・・・。