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

第7回 Puppet実践テクニック(その2)

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

タグ

リソースのメタパラメータであるtagを利用することにより,マニフェストの一部のみをシステムに適用することができます。

リソースにタグを指定するには,まずは以下のようにマニフェストを記述します。

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

file { '/etc/sudoers':
    owner => 'root',
    group => 'root',
    mode  => 440,
    tag   => 'sudoers',
}

そして,puppetdやpuppetrunの実行時に,オプションで以下のようにタグを指定します。puppetdとpuppetrunでは,微妙にオプションの名前や,複数タグの指定のしかたが異なるので,ご注意ください。

# puppetdでのタグの指定
$ sudo puppetd --tags hosts,sudoers
# puppetrunでのタグの指定 パターン1
$sudo puppetrun --tag hosts,sudoers
# puppetrunでのタグの指定 パターン2
$sudo puppetrun --tag hosts --tag sudoers

また,クラスや定義済みタイプ内のリソースには,自動でクラス名や定義済みタイプ名と同じタグがつけれます。したがって以下のマニフェストでは,明示的にタグは指定されていませんが,すべてのリソースにsshというタグがつけられています。

class ssh {
    package { 'sshd': ensure => present }
    service { 'sshd': ensure => running }
}

モジュール

モジュールとは,特定の目的を実現するためのマニフェスト,テンプレート,ファイルのセットを,再利用/再配布可能な形にまとめたものです。

モジュールのディレクトリ/ファイル構成は,以下のようになります。

MODULE_PATH/
   module_name/
      README
      manifests/
         init.pp
      templates/
      files/

MODULE_PATHはデフォルトでは/etc/puppet/modulesと/usr/share/puppet/modulesとなっており,どちらかのディレクトリの下に個別のモジュールを置きます。

マニフェストからモジュールを呼び出すには,以下のように記述します。

import 'autofs'               # MODULE_PATH/autofs/manifests/init.ppを呼び出す
import 'autofs/init.pp'       # 上と同じ
import 'autofs/util/stuff.pp' # MODULE_PATH/autofs/manifests/util/stuff.ppを呼び出す

Puppet本家WikiのPuppet Modulesでは,TracモジュールやXenモジュールなどといったモジュールが配布されていますので,ご参照下さい。

実践テクニックは更に次回に続きます。

著者プロフィール

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

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

URLhttp://mizzy.org/