Hudson PXE plugin

Hudsonのクラスタを作る上での障害の一つは、PCのインストール作業です。自分自身、仕事で使っているHudsonクラスタが大きくなるにつれて、このOSのインストール作業がどんどん煩雑になってきました。インストールには通常メディアの入ったCD-ROMが必要ですし、PC側にはドライブも必要です(そして、なぜか使い古しのPCはCD-ROMドライブが不安定なものが多いのです。)そして、往々にして、CDはどこかのドライブに入れ忘れたまま、ということになります。


更に、インストールそのものも非常に退屈な作業です。時間が掛かる上に、要所要所でインストーラの質問に答える必要があるので、目を離しっぱなしにするわけにもいきません。そのくせ、質問の答えはいつも同じです。OSのインストールが終わったら、CDを抜いてリブートして、更に追加パッケージのインストールやネットワーク設定を行うことになります。決して難しい作業ではありませんが、繰り返しの退屈な作業です。そして、繰り返し作業は生産性の敵です。


そこでPXEの登場です。Unixのほとんどの派生種では(そして実はWindowsも含めて)、これらインストール作業は完全に自動化することができます。またネットワーク経由でブートすることによって、CD-ROMも必要なくする事が出来ます。ところがこのセットアップはDHCP,TFTPなど複数のテクノロジを跨り煩雑です。また、個々のOSについては手順がまとめられているものの、1つのセットアップから複数のOSをネットワークインストールする為の仕組みはあまり整備されていません。なので、この設定も、難しい作業ではないのですが、煩雑です。そして、煩雑な作業も生産性の敵です。


そこで、例によって例のごとく、Hudsonにこれをやってもらうことにしました。こうして、Hudson PXE pluginが生まれました。これによって、スレーブのネットワークインストールを行うのが劇的に簡単になります。


アップデートセンターからこのプラグインをインストールしたら、インストールしたいOSの.isoイメージをダウンロードしてください。どの種類の.isoファイルをダウンロードしたらよいのかはWikiに書かれています。現在のところ、OpenSOlaris, Ubuntu, Fedora, CentOSがサポートされており、またこの部分は拡張可能に出来ているので、他のOSにも対応可能です。Hudsonにこのisoファイルの場所を設定したら、完了です。


次に、インストールしたいPCをHudsonと同じネットワークに接続し、ブートします。BIOSがPOSTしている間にF12を押すと、ネットワークインストールがスタートします。最初に、インストール可能なOSの中から選ぶためのメニューが出ます。



OSを選ぶと、次に、設定にしたがって完全自動インストールをするか、通常のインストーラを使って手動でインストールするかを選べます。手動でインストールするモードは、Hudson用でなくデスクトップなどをインストールする時に便利です。職場では、これでフロア全域の人が任意のOSをメディアなしでインストール出来るようになりました。



このプラグインのウリの一つは、ネットワーク上の既存のDHCPサーバと衝突しないという点です。ネットワークインストールの設定を解説した文献には、よくDHCPサーバへの変更を必要とするものが多いですが、このプラグインではそのような必要はありません。また、PXEブートはブロードキャストを利用するために、ルータを跨いだ別なサブネットでは利用できませんが、このためのリレーを行う小さなツールも書きました。詳細はWikiを参照してください。


今後は、このプラグインをもうちょっと拡張して、Hudsonへの設定も自動で行って、「ネットワークにつないで電源を入れるだけで全自動でスレーブが追加できるよ!」という状態に到達したいと思っています。また、Windowsのネットワークインストールの仕方もいつか解説しようと思いますので、乞う御期待。