Pulling Strings with Puppet

Pulling Strings with Puppet: Configuration Management Made Easy (FirstPress)

Pulling Strings with Puppet: Configuration Management Made Easy (FirstPress)

『Pulling Strings with Puppet』を読んだ。 Puppet の入門書である。

Puppetとは

Puppetはシステム設定の維持管理を自動化するためのツールで、cfengineやらchefやらと同系統のものだ。クライアント/サーバー方式が基本となっていて、中央のサーバー(puppetmasterd)でシステムの設定情報を集中管理する。例えば「webサーバー機にはapache2が入っていること」とか「apache2にバーチャルホストfoo.exampleが切ってあること」だとか。クライアント(被設定環境, puppetd)はこの情報を受信する。そして、自分の環境とあるべき設定を見比べて違いがある場合はあるべき状態に持って行く。

状態を適合させるための仕組みは"provider"と呼ばれて適切な実装が選択される。たとえばパッケージングシステムがaptであれportsであれ、「apache2を入れる」ということができて、サーバー側の設定情報記述はクライアント(被設定)環境に依存しない。どのマシン(ノード)がどのような種類(webサーバー, アプリケーションサーバー, DBサーバー....)であるか(class)という情報はサーバー側でファイルに書いて管理することもできるし、LDAPで管理することもできる。

この他、望むならばサーバーを立てずにスタンドアロンで手元の設定をローカルマシンに適用したり、サーバーを小さなファイル群を提供するためのファイルサーバーにできたり色々機能がある。

書籍

この本は、システム管理者向けのPuppetの薄くて手軽な入門書である。Puppetの概念、記法などを丁寧に書いてある。私も一応、今までpuppetを扱った雑誌記事やら本家のwiki pageやらを読んできたものの、今ひとつすっきりしない部分があった。この本はそういった理解の怪しい部分を解決してくれた。

Puppetの設定は独自の宣言的な外部DSLで書かれるので、puppetを使うだけならばrubyの知識は必要がない。しかし、puppetを拡張するにはrubyが必要である。この本の巻末にも少しだけpuppetを拡張するための知識が書いてあるものの、本気で独自のtypeを書いたりproviderを書いたりと拡張を必要とするならば巻末の情報だけでは不足だろう。ただし、より詳しい資料へのポインタは書いてあるので十分役に立った。