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

第5回 マニフェスト応用編(その2)

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

前回に引き続き,マニフェストについてより詳しく見て行きたいと思います。

メタパラメータ

リソースで指定できるパラメータには,特定のリソースタイプに固有なパラメータだけではなく,すべてのリソースタイプで指定できるパラメータがあります。このようなパラメータをメタパラメータと呼びます。

リソースの依存関係を宣言するbefore,require,notify,subscribeはメタパラメータです。他にも様々なメタパラメータがあります。メタパラメータにどのようなものがあるかは,Puppet日本語WikiのTypeリファレンスをご参照ください。

変数

マニフェストでは以下のように,変数の割り当てと参照が可能です。

$default_owner = 'root'
$default_group = 'root'

file { '/etc/hosts':
    owner => $default_owner,
    group => $default_group,
    mode => 644,
    source => 'puppet://server/module/hosts',
}

{}によって変数のスコープが形成され,同一スコープ内で一度割り当てられた変数の変更はできません。例えば,以下のようにマニフェスト中で変数の値を変更してみます。

$owner = 'root'
$owner = 'nobody'

すると,puppetdがマニフェストを取得する際に,以下のようなエラーが表示されます。(puppetmasterdの起動時には表示されませんので,ご注意ください。)

err: Could not retrieve configuration: Cannot reassign variable owner at /etc/puppet/manifests/site.pp:7

以下のようにサブスコープ内であれば,変数の値を上書きすることができます。

$owner = 'root'

define testing {
    $owner = 'nobody'
}

Facter変数

Facter変数は,Facterというライブラリによって自動でセットされる変数です。このライブラリは,システムに関する情報(プロセッサアーキテクチャ,利用OSとそのバージョン,ドメイン名,FQDN,IPアドレスなど)を収集するための,クロスプラットフォームなRubyライブラリです。

Facter変数には以下の表のようなものがあります。

Facter変数名変数値の例
$operatingsystemCentOS
$fqdnpuppet.example.org
$hostnamepuppet
$domainexample.org
$kernelLinux
$kernelrelease2.6.18-8.el5
$ipaddress192.168.115.129
$macaddress00:0C:29:94:8A:DA
$memorysize1024.00 MB
$memoryfree217.10 MB
$processor0Intel(R) Pentium(R) D CPU 2.80GHz
$processorcount1

ご利用のシステム上でどんなFacter変数が取得できるかは,以下のようにfacterコマンドを実行してみるとわかります。

$ facter
architecture => i386
domain => example.org
facterversion => 1.3.7
fqdn => puppet.example.org
...

配列

以下のような記述で配列を定義することができます。

[ 'one', 'two', 'three' ]

配列の利用例は以下のようになります。この例では,ntpdというserviceリソースが,ntpd.confというfileリソース,ntpというuserリソース,ntpというpackageリソースに依存していることを宣言しています。

service { 'ntpd':
    ensure  => running,
    require => [ File['ntpd.conf'], User['ntp'], Package['ntp'] ],
}

著者プロフィール

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

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

URLhttp://mizzy.org/

コメント

コメントの記入