前回に引き続き,マニフェストについてより詳しく見て行きたいと思います。
メタパラメータ
リソースで指定できるパラメータには,特定のリソースタイプに固有なパラメータだけではなく,すべてのリソースタイプで指定できるパラメータがあります。このようなパラメータをメタパラメータと呼びます。
リソースの依存関係を宣言する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変数名 | 変数値の例 |
| $operatingsystem | CentOS |
| $fqdn | puppet.example.org |
| $hostname | puppet |
| $domain | example.org |
| $kernel | Linux |
| $kernelrelease | 2.6.18-8.el5 |
| $ipaddress | 192.168.115.129 |
| $macaddress | 00:0C:29:94:8A:DA |
| $memorysize | 1024.00 MB |
| $memoryfree | 217.10 MB |
| $processor0 | Intel(R) Pentium(R) D CPU 2.80GHz |
| $processorcount | 1 |
ご利用のシステム上でどんな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'] ],
}

