オープンソースなシステム自動管理ツール Puppet

第6回 Puppet実践テクニック(その1)

この記事を読むのに必要な時間:およそ 3 分

前回までの内容で,Puppetでのシステム管理の肝となるマニフェストについて一通り解説しました。今回から,Puppetを実践で利用するために必要となる,様々なテクニックについて解説していきます。

Puppetの設定

Puppetは特に設定をしなくても,最低限マニフェストさえあれば動作するため,今まで特に設定についての解説はしてきませんでしたが,実践で利用するためには何らかの設定が必要となりますので,Puppetの設定方法について解説します。

コマンドオプションでの設定

設定パラメータをコマンドオプションで指定するには,以下のように実行します。

$ sudo puppetmasterd --confdir=/private/puppet

利用可能なパラメータとそのデフォルト値は,以下のようにコマンドオプションに--genconfigを指定することで確認することができます。

$ puppetd --genconfig | less

--genconfigの出力は以下のようになります(一部のみ抜粋)。

[puppetd]
    # Where Puppet stores dynamic and growing data.  The default for this parameter is calculated specially, like `confdir`_.
    # The default value is '/var/puppet'.
    # vardir = /var/puppet

設定ファイルでの設定

設定ファイルは0.23.xでは/etc/puppet/puppet.confというファイルであり,[main],[puppetd],[puppetmasterd]といったセクションに分かれています。

[main]
    confdir = /etc/puppet

[puppetd]
    usecacheonfailure = true

[puppetmasterd]
    manifestdir = $confdir/manifests         
    manifest    = $manifestdir/site.pp

[main]セクションにあるパラメータはすべてのコマンドに共通のパラメータを指定します。その他のセクションは,各コマンド特有のパラメータを指定します。例えば,[puppetd]セクションはpuppetd コマンド特有のパラメータ,[puppetmasterd]セクションはpuppetmasterdコマンド特有のパラメータを指定します。また, [fileserver]など,コマンドではなく機能別のセクションもあります。

上の例の通り,$confdir,$manifestdirといった形で,設定ファイル中で定義されたパラメータを,別な箇所で参照することが可能です。

0.22.x以前では,設定ファイルはコマンド毎に異なり,puppetdの場合は/etc/puppet/puppetd.confを, puppetmasterdの場合は/etc/puppet/puppetmasterd.confをデフォルトで参照します。 puppetmasterd.confは以下のようになり,セクションはありません。

confdir     = /etc/puppet  
manifestdir = $confdir/manifests         
manifest    = $manifestdir/site.pp

0.23以降でも,0.22.x以前と同様コマンド毎に異なる設定ファイルを持つこともできますが,推奨されていません。

Puppetへのアクセスコントロール

puppetdやpuppetmasterdへのアクセスをコントロールするためには,namespaceauth.confという設定ファイルを利用します。以下はpuppetdからpuppetmasterdへのアクセスをコントロールするための設定例です。

# puppetdからのマニフェスト取得アクセスのコントロール
[puppetmaster]
    allow *.example.org
    deny  deny.example.org

# puppetdからのレポート通知アクセスのコントロール
[puppetreports]
    allow *.example.org
    deny  deny.example.org

# puppetdからのファイルサーバ機能へのアクセスコントロール
[fileserver]
    allow *.example.org
    deny  deny.example.org

このファイルが存在しない場合,デフォルトですべてアクセス許可となるのですが,このファイルが存在する場合には,たとえファイル内に何も記述されていなくても,デフォルトですべてのアクセスが拒否されます。このように,ファイルが存在しない場合と,ファイルが存在するが空の場合とで, Puppetの挙動が異なるのでご注意ください。

自動署名

第2回でも解説したように,通常,Puppetクライアントの証明書に対する署名は,Puppetサーバ側で手動で行いますが, /etc/puppet/autosign.conf というファイルに,以下のように自動署名の対象となるホスト名を列挙することで,該当するホストからの署名リクエストに対して自動で署名することができます。

client.example.org
*.example.com

著者プロフィール

宮下剛輔(みやしたごうすけ)

(株)paperboy&co.技術責任者。 社内ではサーバ周りからアプリケーション開発まで幅広く関わる一方,個人的にはPerlプログラミングを趣味として,サーバ管理用ユニットテストスイート Assurer(アシュラ)をオープンソースで公開したり,CPAN AuthorPlaggerコミッタとして活動している。また,YAPC::Asia 2007 Tokyo等の技術系カンファレンスでスピーカを務めるのも最近の楽しみのひとつ。共著書に『MASHUP++』がある。

URLhttp://mizzy.org/

コメント

コメントの記入