このページは[MetaparameterReference]を翻訳しているものです。 翻訳の間違いや誤字、元ページの更新などに気づいた方もぜひ修正お願いします。

リソースタイプについてはTypeリファレンスをご参照ください。

メタパラメータ

メタパラメータは、全てのリソースタイプで使用可能なパラメータです。これらはpuppetフレームワークの一部として含まれており、あらゆるインスタンスに実装されています。したがって、メタパラメータはマニフェスト上の全てのインスタンス(定義済みのコンポーネントを含む)で指定できます。

使用可能なメタパラメータ

alias

オブジェクトのエイリアスを作成します。シンボル名を指定する際にも、puppetは内部的にこのパラメータを使用します。

file { sshdconfig:
    path => $operatingsystem ? {
        solaris => "/usr/local/etc/ssh/sshd_config",
        default => "/etc/ssh/sshd_config"
    },
    source => "..."
}

service { sshd:
    subscribe => file[sshdconfig]
}

この機能を使用するとき、puppetパーサはsshdconfigをnameとして設定しており、serviceリソースタイプのsshdインスタンスの依存性解決に使用しています。このメタパラメータを明示的に使用することもできますが、エイリアスが有効なのは内部のライブラリにおいてです。

下記のコードは意図したように動作しません。

file { "/etc/ssh/sshd_config":
    owner => root,
    group => root,
    alias => sshdconfig
}

file { sshdconfig:
    mode => 644
}

この二つの文節が同じファイルに影響を与えるべきとはpuppetパーサにはわかりません。

See the language tutorial for more information.

before

requireパラメータの逆です。特定のオブジェクトがこのオブジェクトの後に適用されることを保証します。

file { "/var/nagios/configuration":
    source  => "...",
    recurse => true,
    before => Exec["nagios-rebuid"]
}

exec { "nagios-rebuild":
    command => "/usr/bin/make",
    cwd => "/var/nagios/configuration"
}

あるコマンドが実行される前に、関連するファイルが準備されていることを保証できます。

check

Propertys which should have their values retrieved but which should not actually be modified. This is currently used internally, but will eventually be used for querying, so that you could specify that you wanted to check the install state of all packages, and then query the Puppet client daemon to get reports on all packages.

loglevel

ログとして記録される情報のレベルです。ログレベルは(デフォルトの書き込み先である)syslogに送られるログの量に最大の影響を与えます。有効な値はdebug, info, notice, warning, err, alert, emerg, crit, verboseです。

noop

実際に動作すべきかどうかです。有効な値はtrue, falseです。

notify

subscribeパラメータの逆です。特定のオブジェクトに対してイベントを送ります。

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

この例ではsshdの設定ファイルが変更された際にsshdが再起動されます。

require

このオブジェクトが依存する、一つまたは複数のオブジェクトを指定します。依存するオブジェクトに対する変更が、このオブジェクトに対する変更より先に適用されることを保証します。例えば

# Create the destination directory before you copy things down
file { "/usr/local/scripts":
    ensure => directory
}

file { "/usr/local/scripts/myscript":
    source => "puppet://server/module/myscript",
    mode => 755,
    require => File["/usr/local/scripts"]
}

複数の依存関係はカンマで区切って大括弧で囲んだ配列で指定できます。

require => [ File["/usr/local"], File["/usr/local/scripts"] ]

Puppetは依存するオブジェクトをできる限り自動で判定してrequireに加えようとします。この自動requireのためのフックが用意されているので、依存するオブジェクトを見つけだす新たな方法を追加することは容易です。だからもし良いアイデアがあれば教えてください。

実際、上の例は冗長です。Puppetは操作対象の親ディレクトリは全て自動的にrequireするからです。つまりmyscriptがコピーされる前に、親ディレクトリが作成されることになります。

execリソースについては、CWD(指定されている場合)およびcommandパラメータに現れる全ての絶対パスが自動的にrequireされます。例えば上の例のmyscriptを実行するためのexecリソースを作成した場合、ファイルを転送するためのfileリソースが自動的にrequireされるので、常に最新のバージョンを実行することになります。

schedule

オブジェクトを定期的に適用するスケジュールを設定します。まずスケジュールオブジェクトを作成し、パラメータにスケジュールオブジェクトの名前を指定します。

schedule { daily:
    period => daily,
    range => "2-4"
}

exec { "/usr/bin/apt-get update":
    schedule => daily
}

スケジュールオブジェクトの作成は、スケジュールを使用するオブジェクトの前である必要はありません。

subscribe

このオブジェクトに依存しているオブジェクトです。subscribeしたオブジェクトの変化は、依存しているオブジェクトが更新される結果をもたらします。例えば:

class nagios {
    file { "/etc/nagios/nagios.conf":
        source => "puppet://server/module/nagios.conf",
        alias => nagconf # just to make things easier for me
    }
    service { nagios:
        running => true,
        subscribe => File[nagconf]
    }
}

ファイルnagconfが更新された場合、サービスnagiosは更新されます(リスタートする)。

tag

関連した要素に指定したタグを追加します。すべての要素が、可能な限りの情報をタグ付けされた上で(例えば、要素を含む各ClassとComponent)、タグを与えられた要素に追加するのに役に立ちます。

現在、タグはホストの設定の一部を適用するような事柄に有用です。

puppetd --test --tags mytag

これによって、テストしたい部分だけを実行することができます。