題名の通りなのだが、PXEブートとNFSとメモリ上でOS起動を連携させることで、結構なことができるようになる。
例えば、自動インストールを考えてみよう。
上記の3要素をうまく使えば、kickstartにはあまりそぐわないようなインストール方法をとることができる。
どういった場合かというと、
[note]
- HDDのデータをまるごとバックアップしておいて、壊れた場合はサーバー再起動するだけで自動復旧
- kickstartでは融通がきかないような作り込まれたシステムでも、サーバー再起動するだけで自動インストール
- サーバー毎のインストールデータを/からそれぞれ保持しておいて、新しいサーバーを再起動するだけで用途にあったデータをコピーして自動インストール[/note]
などである。
具体的にいくと、以下のような流れになる。
- サーバーのBIOS設定でDHCPから起動できるようにする
- 自動インストール用サーバーを別で用意する
- 日々、自動インストールサーバーのとあるディレクトリにssh+rsyncでデータを/からコピーしておく
- 自動インストールサーバーにDHCPとtftpとNFSを設定する
- PXEブート用のinitrdに必要最低限のOSを準備し/からのデータを詰め込んでイメージ化する
- サーバーを起動させる
- PXEブートにより指定したkerneとinitrdからメモリ上で起動する
- メモリ上で起動したOS上でHDDをフォーマットする
- メモリ上で起動したOSから自動インストールサーバーのとあるディレクトリをNFSマウントする
- 自動インストールサーバーにはバックアップしているOSデータがとあるディレクトリにおかれているのでrsyncでコピーする
- コピー完了後再起動する
- サーバーがHDDから起動すると、バックアップしているOSデータで稼働する
ざっとこのような流れになる。
自動インストールサーバー上に、様々なOSを/から用意しておけば、どんな時でも簡単にサーバーを再構築することができる。
PXEブート用のOS内のfirstbootあたりに、HDDをフォーマットしてNFSマウントしてデータコピーする、ようなツールを仕込んでおけば、サーバーを起動するだけでインストールが完了してしまう。
枯れた技術を組み合わせるだけでも、便利な仕組みができちゃうものだ。