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

第3回 マニフェストはじめの一歩

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

今回から,Puppetでのシステム管理の肝となる,マニフェストについて解説していきます。

マニフェストとは,Puppet独自の宣言型言語によって,システムのあるべき状態を記述したファイルです。マニフェストをいかに維持管理するかが,Puppetでのシステム管理の要となります。

シンプルなマニフェストをシステムに適用してみる

まずはシンプルなマニフェストを作成してそれを適用することによって,Puppetが動作する様子を実際に見てみましょう。

Puppetサーバ上で,以下の内容の/etc/puppet/manifests/site.ppを作成します。

file { '/etc/hosts':
    owner => 'root',
    group => 'root',
    mode  => 644,
}

内容は推測できると思いますが,詳細は後ほど解説します。

マニフェストを作成したらpuppetmasterdを起動します。

$ sudo puppetmasterd --nonodes --verbose
info: Starting server for Puppet version 0.22.4
info: Parsed manifest in 0.01 seconds
info: Listening on port 8140
notice: Starting Puppet server version 0.22.4

次はPuppetクライアント側での操作です。/etc/hostsのパーミッションを644以外に変更します。

$ sudo chmod 600 /etc/hosts

そしてpuppetdを起動します。--verboseオプションをつけることにより,実際に何が行われているのかを確認することができます。

$ sudo puppetd --server puppet.example.com --verbose
notice: Starting Puppet client version 0.22.4
info: Facts have changed; recompiling
info: Caching configuration at /var/puppet/state/localconfig.yaml
info: No classes to store
notice: Starting configuration run
notice: //File[/etc/hosts]/mode: mode changed '600' to '644'

この様に,/etc/hostsのパーミッションが600から644に変更されていることが確認できます。

リソースの宣言

ユーザ,ファイル,ソフトウェ等の,Puppetの管理対象となるものを「リソース」と呼びます。マニフェスト作成のはじめの一歩は,リソースを宣言するところからはじまります。

先ほど適用したマニフェストをもう一度見てみます。

file { '/etc/hosts':
    owner => 'root',
    group => 'root',
    mode  => 644,
}

最初の「file」はリソースタイプと呼ばれ,このリソースの種類を示しています。リソースタイプの次に記述されている「'/etc/hosts'」はリソースを識別するための名前です。残りのowner,group,modeはこのリソース固有のパラメータです。

これにより,『/etc/hostsファイルのオーナ/グループはroot/root,パーミッションは644であるべき』というシステムの状態が宣言されます。

あらかじめPuppetに組み込まれているリソースタイプには,file以外にも以下のようなものがあります。

  • user(ユーザ)
  • group(グループ)
  • host(ホスト)
  • package(ソフトウェアパッケージ)
  • service(稼動しているサービス)

これら以外にも様々なリソースタイプがあります。

リソースの名前は管理対象となるファイルのパスを示しています。管理対象となるファイルのパスは,pathパラメータによって指定することもできるため,以下の様にマニフェストを記述することもできます。

file { 'hosts':
    path  => '/etc/hosts',
    owner => 'root',
    group => 'root',
    mode  => 644,
}

pathパラメータの様に,リソース名と結び付けられるパラメータをnamevarと呼びます。namevarはfileタイプの場合はpath,userタイプの場合はnameといった具合に,リソースタイプによって異なります。

fileタイプで指定できるパラメータには,他にも以下のようなものがあります。

  • backup
  • checksum
  • content
  • ensure

fileタイプ以外のリソースタイプにどんなものがあるか,各リソースタイプのnamevarは何か,各リソースタイプ毎に設定できるパラメータやその意味は何かなど,もっと詳しくお知りになりたい方は,パペウィキ - Typeリファレンスをご参照下さい。

この連載でも順次解説していきたいと思います。

著者プロフィール

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

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

URLhttp://mizzy.org/

コメント

コメントの記入