前回に引き続き、
メタパラメータ
リソースで指定できるパラメータには、
リソースの依存関係を宣言するbefore、
変数
マニフェストでは以下のように、
$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'
すると、
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変数には以下の表のようなものがあります。
Facter変数名 | 変数値の例 |
$operatingsystem | CentOS |
$fqdn | puppet. |
$hostname | puppet |
$domain | example. |
$kernel | Linux |
$kernelrelease | 2. |
$ipaddress | 192. |
$macaddress | 00:0C:29:94:8A:DA |
$memorysize | 1024. |
$memoryfree | 217. |
$processor0 | Intel(R) Pentium(R) D CPU 2. |
$processorcount | 1 |
ご利用のシステム上でどんなFacter変数が取得できるかは、
$ facter architecture => i386 domain => example.org facterversion => 1.3.7 fqdn => puppet.example.org ...
配列
以下のような記述で配列を定義することができます。
[ 'one', 'two', 'three' ]
配列の利用例は以下のようになります。この例では、
service { 'ntpd':
ensure => running,
require => [ File['ntpd.conf'], User['ntp'], Package['ntp'] ],
}
条件指定
セレクタ
セレクタは条件によって変数の値を変える場合に利用します。以下の例では、
$sudo = $operatingsystem ? {
freebsd => 'security/sudo',
default => 'sudo',
}
package { "$sudo": ensure => latest }
case
セレクタは条件によって変数の値を変えるために利用しますが、
以下の例では、
case $operatingsystem {
openbsd: {}
default: {
package { 'sudo':
ensure => present
}
}
}
以下の例では、
case $operatingsystem {
sunos: { include 'solaris' }
redhat: { include 'redhat' }
default: { include 'generic' }
}
if/else
if/
if $boolean {
file { '/some/file': ensure => present }
} else {
file { '/some/other/file': ensure => present }
}
関数
Puppetは多くの組み込み関数をサポートしています。関数にはstatementタイプとrvalueタイプの2種類があります。 statementタイプの関数は独立して実行するもので、
notice('Something weird is going on')
以下のように関数はカッコなしても実行できます。
notice 'Something weird is going on'
template関数はrvalueタイプであり、
file { '/my/file': content => template('mytemplate.erb') }
Puppetで利用可能な関数については、
クォート
マニフェストでは、
シングルクォートされた文字列は変数展開されませんので、
$value = '$one'
ダブルクォートされた文字列は変数展開されますので、
$value = "$one"
変数に使われている文字列と他の文字列を明確に区別したい場合には、
$value = "${one}two"
予約語
true、
コメント
マニフェストではshスタイルのコメントをサポートしており、
# OS毎にsudoのパッケージ名を変更する
$sudo = $operatingsystem ? {
freebsd => 'security/sudo',
default => 'sudo',
}
マニフェストのインポート
以下のように、
import 'other.pp'
import 'classes/*'
import 'packages/[a-z]*'
まとめ
マニフェストについての解説は今回で終了です。これでマニフェストについての必要な知識は一通り得られたことと思います。次回からは、