Hadoopを大量に入れるのは面倒なのでPuppetを使うことにした。結果としてうまくいってる。動いてる。しかも楽だった。
インストール終ってから買ったオ・ライリーのHadoop本にもPuppetつかえと書いてあった。というわけで、HadoopやるならPuppetマジお勧めです。
従来の方法との比較。
用途毎に特化している。
コマンド | 用途 | 感想 |
puppet | 設定ファイルとコマンド実行 | 設定ファイルが独自すぎる |
Rsync | ファイルの同期 | 普段使ってないとミス連発 |
dd | ディスクコピー | コピー後のIPアドレス書換などが面倒、ディスク付け替えも面倒 |
ssh+cron | 自動実行 | ただし失敗したときしんどい |
LDAP+NIS | ユーザ一元管理 | 強力すぎるし、場合によって面倒。PAMの知識がいる |
今回のHadoopインストールでは、次のことを徹底的にやりたいわけだ。
- パッケージ管理
- 設定管理。
- ユーザ管理
- 20台に32bitと64bitを混ぜちゃった。
4番目の条件が強烈に問題で、なんどOSを入れ替えようかと思ったことか。5月連休で研究室に行けないので、なんとかリモートだけでやる方法を模索した。そこでPuppetと言う結論に至る。
Puppetの嬉しいところ
- ディストリビューションが違っても大丈夫。
- 64ビットのOSが混ざっても大丈夫。 x86_64, x86 でも問題なし。
puppetのインストール方法
設定手法
パッケージを入れる。
sudo aptitude install puppet
基本的な流れ
基本的な流れが重要で。Puppetにはサーバー・クライアントがある。
サーバー(配布元)からクライアント(適用先)がファイルを受け取って、設定を適用する。
クライアントはサーバーに設定を取りに行きます。
サーバーはクライアントに設定を送ります。。
クライアントは、設定に従ってコマンドを実行します。
puppetのポイント
サーバーに設置する設定は「Puppet設定ファイル」である。SSH+Cronとは違う。とくにコマンド実行でないこと。ココが注意点。
- ユーザーが存在する状態にしなさい。
- Apache2のバージョンを常に最新に維持しなさい。
- ファイルの中身をこの状態に維持しなさい。
と記述する。SSHだとこのコマンドを実行すると書くのですが。Puppetは「○○○○の状態にしなさい」と書いておく
状態維持がPuppetの基本概念とのこと。
暗号化通信。
クライアントは、マスタサーバーから設定を転送します。サーバーを間違えないように、クライアントーサーバー間で署名をします。この設定が間違っていると通信をしません。
サーバ〜クライアント間は暗号化通信を行なうので注意が必要。
設定をテーマ別にまとめるとPuppetはかなり使える。
わかりやすい例:AptLineをPuppetで管理する。
Managing sources.list with puppet