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

第1回 システム自動管理ツールの必要性とPuppetの概要

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

独自の宣言型言語によりシステムを管理

Puppetでは,以下の様な独自の宣言型言語によって,システムのあるべき状態を記述し,システム管理を行います。

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

上の例では,⁠/etc/hostsのオーナー/グループはroot/rootであり,パーミッションが644である」という状態を記述しています。Puppetはこれに従い,/etc/hostsの状態をチェックし,オーナー,グループ,パーミッションを適切な状態に維持します。

この独自言語によってシステムのあるべき状態が記述されたファイルを「マニフェスト」と呼びます。

クライアント/サーバ型アーキテクチャ

Puppetはクライアント/サーバ型アーキテクチャとなっており,マニフェストはすべてPuppetサーバ上で管理されます。

Puppetクライアント(システム管理対象となるサーバ群)は,Puppetサーバに定期的(デフォルトでは30分)にアクセスしてマニフェストを取得し,自分自身をあるべき状態に維持します。

また,Puppetにはレポーティングの機能もあり,Puppetクライアントはマニフェストに従って実行したタスクの結果を,Puppetサーバへと通知します。

Puppet のクライアント/サーバ型アーキテクチャ

Puppet のクライアント/サーバ型アーキテクチャ

抽象化レイヤー

Puppetには抽象化レイヤーと呼ばれる,OS,ディストリビューション,パッケージシステム等の違いを吸収してくれるレイヤーがあります。これによりPuppetの利用者は,複数のOSが混在した環境でも,OSの違いを意識することなく,単一のマニフェストでシステムを管理することが可能となります。

抽象化レイヤーで吸収することができる差異の例としては,以下の様なものがあります。

  • Solaris / Linux / BSD
  • yum / apt / ports
  • adduser / useradd
  • /etc/passwd / NetInfo

たとえば,ユーザ追加用のマニフェストを記述する場合,コマンドがadduserなのかuseraddなのか,または,/etc/passwdで管理されるのかNetInfoで管理されるのか,といったことを意識することなく,以下の様に記述すればOKです。

user { 'miyashita':
    name       => 'miyashita',
    password   => 'password',
    managehome => true,
    groups     => 'paperboy',
}

依存関係の処理

Puppetでは,リソース(管理対象となるコンポーネント)間の依存関係を記述することができます。

class ssh {
    file { '/etc/ssh':
        source  => puppet://server/module/ssh,
        recurse => true,
        notify  => Service[ssh]
    },

    service { 'ssh':
        name   => sshd,
        ensure => running,
    }, 
}

この例では,/etc/ssh以下のファイルに変更があった場合,sshdを再起動する,といった動作になります。

以上がPuppetの概要です。Puppetがどんなツールなのか,掴んで頂けましたでしょうか?

次回は,実際にPuppetをインストールして動作させるまでの手順についてご紹介したいと思います。

参考URL
Puppet開発元のウェブサイト(英語)
Puppet日本語情報Wikiパペウィキ
桜井知之氏によるOSC2007発表資料『オープンソースによるシステム管理の自動化』(PDF)

著者プロフィール

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

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

URLhttp://mizzy.org/