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

メタパラメータ

メタパラメータはPuppetフレームワークの一部分であり、全ての要素に作用します。 メタパラメータは、マニフェストの全ての部分から参照できます。

有効なメタパラメータ

alias

aliasはオブジェクトのエイリアスを作成します。下記の例での"sshdconfig"のような名前が入力された際に、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を名前としてセットし、ライブラリ上でそのファイルのエイリアスがセットされ、依存性をチェックします。あなたはこのパラメータを自分で利用できますが、エイリアスそのものを利用できるのはライブラリだけです。例えば、下記のコードは動作しません。

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

file { sshdconfig:
    mode => 644
}

Puppetパーサは、上記の二つの定義文が同じファイルを指していると判断することができません。 [LanguageTutorial]をご覧ください。

before

beforeはrequireとは反対の意味を持ちます。beforeパラメータで指定したオブジェクトは、パラメータが設定されたオブジェクトの前に作用します。

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

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

この例では、makeコマンドの前にfileリソースが作用します。つまり、fileリソースにより全てのファイルが更新された後、makeコマンドが実行されます。

check

この値は読み込み専用であり、書き込みは不可能です。これは現在のところ内部的に使用されていますが、将来的に使用可能になるかもしれません。そうなれば、インストール状態をチェックしたいパッケージを指定してレポートさせることなどができるようになるでしょう。

loglevel

記録されるログ情報のレベルを設定します。これはsyslogに送られる時に非常に大きな影響を及ぼします。値は debug, info, notice, warning, err, alert, emerg, crit, verbose のいずれかです。

noop

実際に実行されるべきかを示すブール値のフラグです。値は true, false のいずれかです。

notify

notifyはsubscribeとは反対の意味を持ちます。これは指定したオブジェクトにイベントを送ります。

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

service { sshd:
    ensure => running
}

これによってsshd_configファイルが変更された場合に、sshdサービスを再起動することを意味します。

require

パラメータが設定されたオブジェクトが依存しているオブジェクトを指定します。このパラメータを使用することで、依存するオブジェクトに対する変更がこのオブジェクトよりも前に適用されることを保証できます。

例:

# 下の/etc/local/scripts/myscriptをコピーする前にあて先のディレクトリを作る。
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 --tag mytag

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

ResourceType

  • namevarは割り当ての時にtypeの宣言でコロンの前に置かれる文字パラメータです。namevarは、あるtypeのインスタンスを一意に識別するために使われる固有の名前です。通常、開発者だけがnamevarについて考える必要があるでしょう。

次のようなコード:

      file { "/etc/passwd": owner => root, group => root, mode => 644 }

"/etc/passwd"はファイルオブジェクトの名前とし、pathはファイルオブジェクトにおいてnamevarであるため、その文字はpathパラメータに割り当てられます。

  • ?Featureは、いくつかのproviderでサポートされていないかもしれないという能力です。どうやって与えられたproviderを使用することができるかを決定するサポートされるFeatureのリストを使うことができます。
  • Features are abilities that some providers might not support. You can use the list of supported features to determine how a given provider can be used.
  • パラメータはインスタンスの指定した設定を決定します。それらは直接システムを変更するか、どのようにインスタンスの振る舞うかに影響するか(例えば、execインスタンスのpathを追加するとかファイルインスタンスで再帰をするかなど)、どちらかです。
  • providerは与えられたresource typeのための下層レベルのFeatureを提供します。これは普通、外部コマンドを呼び出す形式になります。

?必要なバイナリがproviderによって特定されるとき、絶対パスは、バイナリがそのpathに存在しなければならないことを示し、unqualified binariesはpuppetがshellのpathによってbinaryを探すことを示します。

When required binaries are specified for providers, fully qualifed paths indicate that the binary must exist at that specific path and unqualified binaries indicate that Puppet will search for the binary using the shell path.

?Resource typeはそれらの使えるFeatureを決定し、Providerは提供できるFeatureを見るためにテストすることができます。

Resource types define features they can use, and providers can be tested to see which features they provide.

cron

Cronを入れたり管理したりします。すべてのFieldはコマンドとユーザを除いてオプションではありますが、周期的でないFieldを指定することは毎分ごとにコマンドが実行されることになります。Cronの名前は実際のJobの一部ではないので、Puppet内部で検索することのみに使われます。

もし名前を除いたすべて存在するJobと同じ、CronのJobを作成するならば、そのJobは同価であると考えられ、新しい名前がそのJobと常に関連づけられるでしょう。一度この関連が作られ、ディスクと同期したら、Jobを普通に管理できるようになります。(Jobのスケジュールを変えるなど)

Parameters

command

cron jobで実行するコマンドです。環境はlocalのsystemの設定によってさまざまなコマンドが提供され、そして常に絶対パスでコマンドが提供されているのがもっとも良いです。ユーザのプロファイルは、コマンドが実行されるとき、参照されません。なぜなら、もしユーザの環境が望まれているならば、手動で参照されるべきだからです。

すべてのcronパラメータは値としてabsentをサポートしています。absentはfieldのいかなる存在している値も削除します。

ensure

オブジェクトがあるべき基本的な状態です。正しい値はabsent,presentです。

environment

どのような環境設定もこのcron jobに関連付けれます。環境設定はheaderとcrontabのjobの間に収められることになります。これは他にある、より早い設定のcron jobに影響を与えないということを保障しません。

?また、Puppetは自動的に、管理されていない環境設定が与えられたcron jobに関連付けられているかどうか決定できません。もし既に環境設定つきのcron jobを設定していたとして、そのときpuppetはそれらの設定をファイルの同じ場所で設定を保ちますが、指定されたjobにそれらは関連付けられていないでしょう。

Also, Puppet cannot automatically determine whether an existing, unmanaged environment setting is associated with a given cron job. If you already have cron jobs with environment settings, then Puppet will keep those settings in the same place in the file, but will not associate them with a specific job.

設定はcrontabに現れるべきであり、正確に指定されるべきです。たとえば、'PATH=/bin:/usr/bin:/usr/sbin'のようにします。複数の設定は配列として指定されるべきでしょう。

hour

cron jobを実行する時間です。任意。指定されるなら、0~23の間でなければならない。

minute

cron jobを実行する分です。任意。指定されるなら、0~59の間でなければなりません。

month

1年のうちの月です。任意。もし指定されるのであれば、1~12または月の名前(Decemberなど)でなければなりません。

monthday

コマンドを実行する月のうちの日付けです。任意。指定されるのであれば、1~31の間でなければなりません。

name (namevar)

?cron jobのsymbolic name。このnameは人が参照するためだけに使われ、cron jobをsystemで見つけるためにシステムで自動的に生成されます。一般に、Puppetが指定されたjobに対して既存のcron jobに合うように最善をつくすように、これは重要でないでしょう(Puppetは追加したcron jobにコメントを加えます)。しかし少なくとも、管理されていないjobから、手動による介入を必要とする管理されたjobに変換することは可能です。

The symbolic name of the cron job. This name is used for human reference only and is generated automatically for cron jobs found on the system. This generally won't matter, as Puppet will do its best to match existing cron jobs against specified jobs (and Puppet adds a comment to cron jobs it adds), but it is at least possible that converting from unmanaged jobs to managed jobs might require manual intervention.

nameは英数字と'-'のみ使用することができます。

special

specialスケジュールはFreeBSDのみサポートしています。

user

コマンドを実行するuserです。現在Puppetでチェックできないため、userはcron jobを実行許可を持たなければなりません。

The user defaults to whomever Puppet is running as.

weekday

コマンドを実行する曜日です。任意。指定されるのなら、0~6の間で、0は日曜、または日付の名前でなければなりません。(Tuesdayなど)。

exec

外部コマンドを実行します。このメカニズムによって実行されるコマンドは、何度実行しても問題が起こらない、つまり冪等であるということが非常に重要です。コマンドを冪等にする簡単な方法は、createsパラメータなどを使って、ある条件を満たす場合にしか実行しないようにすることです。

またrefreshonlyパラメータを使用することで、イベント発生時にしかコマンドを実行しないように制御することもできます。イベント発生時に任意のコマンドを実行するよう設定するときに便利です。

特筆すべき点として、execは同じ名前を持つインスタンスが複数存在してもエラーと見なされません。ある種の機能を実現するためにはこのような仕様にするしかなかったのですが、事を複雑にしているのも確かです。特に、他のリソースの依存リソースとして重複する名前を持つexecインスタンスを使用することはできません。どちらのインスタンスを指定しているのか、Puppetには区別がつかないからです。

例えば

# production クラスで定義されている
exec { "make":
    cwd => "/prod/build/dir",
    path => "/usr/bin:/usr/sbin:/bin"
}

#. etc. .

# test クラスで定義されている
exec { "make":
    cwd => "/test/build/dir",
    path => "/usr/bin:/usr/sbin:/bin"
}

これがexec以外のタイプであったなら、同じ名前を持つインスタンスが複数の場所に存在するというエラーになるでしょう。しかし上の例が異なる意図を持つことは明らかですから、execは特別扱いする必要があります。

できる限り、名前の重複は避けることをお奨めします。

execが他のリソースからイベントを受け取ると、コマンドを再実行します(または、refreshパラメータで指定されたコマンドを実行します)。

execは、標準ではPuppetに備わっていない機能を実現するために使われます。それは短期的に見れば適切な(そして避けられない)使い方と言えますが、できるだけ早くPuppetのネイティブなリソースタイプに移し替えることを推奨します。もしあなたがexecを使って多くの作業をこなしているのなら、少なくともどんなことをしているのか、Reductive Labsに知らせてください。そうすれば、あなたがexecを使って行っている作業のための、ネイティブなリソースタイプを作ることができるでしょう。

Parameters

command (namevar)

実際に実行するコマンドです。絶対パスで指定するか、もしくはサーチパスをpathパラメータで指定する必要があります。コマンドの実行に成功した場合、コマンドの全ての出力がインスタンスの標準ログレベル(通常はnotice)で記録されます。コマンドの実行に失敗した場合(コマンドの返り値がreturnsパラメータで指定された値と異なる場合)、errログレベルで記録されます。

creates

コマンドが作成するファイルです。このパラメータが指定されたなら、コマンドは指定されたファイルが存在しない場合だけ実行します。

exec { "tar xf /my/tar/file.tar":
    cwd => "/var/tmp",
    creates => "/var/tmp/myfile",
    path => ["/usr/bin", "/usr/sbin"]
}

cwd

コマンドを実行するディレクトリです。指定したディレクトリが存在しないなら、コマンドは失敗します。

env

コマンドに設定したい追加環境変数です。もし、これを使ってPATHを設定するなら、pathの属性を上書きするのに注意してください。複数の環境変数は配列によって指定されるべきです。

group

コマンドを実行するグループです。これは異なったPlatformでまったくでたらめに動くようです。それはRubyのせいでもPuppetのせいでもなく、Shellの異なったユーザとして実行するときに存在するのと同じ種類のものなので、Platformの問題です。

logoutput

コマンドの出力をログに記録するかどうかを指定します。デフォルトではexecリソースタイプのloglevelで記録します。コマンドの実行がエラーとなった場合にだけ出力を記録したい場合は on_failure を指定してください。使用できる値は true, false, on_failure それから任意のログレベルです。つまり true, false, on_failure, debug, info, notice, warning, err, alert, emerge, crit となります。

onlyif

このパラメータが設定されたなら、コマンドが0を返したときだけ実行します。例えば

exec { "logrotate":
    path => "/usr/bin:/usr/sbin:/bin",
    onlyif => "test `du /var/log/messages | cut -f1` -gt 100000"
}

これはtestがtrueを返したときだけlogrotateを実行します。

このコマンドは、メインのコマンドと同じルールに従うのに注意してください。pathが設定されていないならば、絶対パスでなければならないということです。

path

コマンドを実行するためのサーチパスです。pathパラメータを指定しない場合、実行するコマンドは絶対パスで指定しなければいけません。複数のパスは配列として指定するか、コロンで区切った文字列として指定します。

refresh

更新時に実行するコマンドを指定します。execが他のリソースからイベントの通知を受けたとき、デフォルトでは単に再実行しますが、このパラメータを指定することで更新時に異なるコマンドを実行することができます。

refreshonly

コマンドは更新する仕組みとして、依存したオブジェクトが変更されたときのみ、実行される。このパラメータが意味を持つのは、そのexecリソースが別のリソースに依存している場合だけです。

# Pull down the main aliases file
file { "/etc/aliases":
    source => "puppet://server/module/aliases"
}

# Rebuild the database, but only when the file changes
exec { newaliases:
    path => ["/usr/bin", "/usr/sbin"],
    subscribe => file["/etc/aliases"],
    refreshonly => true
}

subscribeとnotifyだけが動作を引き起こすことができる、という点に注意してください。requireは含まれません。つまり、refreshonlyパラメータを指定する意味があるのは、subscribeまたはnotifyとともに指定する場合だけです。妥当な値はtrueおよびfalseとなります。

returns

期待される返り値です。実行されたコマンドが他の値を返したら、エラーが返されます。デフォルトは0です。

timeout

コマンドがかかるべき最大の時間です。もしコマンドがtimeoutより長くかかったら、コマンドは失敗してとまったと考えられます。0以下の値を使用すると、timeoutは無効になります。

unless

このパラメータに設定したコマンドが終了コード0以外を返した時のみexecコマンドを実行します。例えば

exec { "/bin/echo root >> /usr/lib/cron/cron.allow":
    path => "/usr/bin:/usr/sbin:/bin",
    unless => "grep root /usr/lib/cron/cron.allow 2>/dev/null"
}

このサンプルはcron.allowファイル(Solaris)にrootが記載されていなかった場合にrootを追加します。

注意:このコマンドはパスが設定されていない場合には絶対パスで記述しなければいけないという 主なコマンドのルールと同じ規則に従います。

user

userはコマンドを実行するユーザです。これを使用した場合、現在どんなエラーも得られないことに注意してください。Rubyのバグの為です。

file

パーミッションや所有者などの設定、fileとdirectotyの両方の作成、リモートサーバからファイル全体を検索するなどを含んだ、localファイルの管理をします。Puppetの成熟によって、file要素は、contentの管理に使うことが少なくなり、代わりに、nativeな要素がそれらを行うのに使われるようになるでしょう。

もし中央の場所からファイルをしばしばコピーすることがあるなら、nativeな要素を使うことよりも、Reductive Labsに連絡して、あなたがしたいことをサポートするnativeな要素をあなたと開発することを望んでいます。

Parameters

backup

置き換えられる前にファイルをバックアップすべきかどうかです。Filebucketを通してファイルをバックアップするのに適した方法があります。Filebucketは、バックアップのディレクトリを散らかさずにMD5 sumでファイルを保管し、簡単に検索することができます。ローカルのFilebucketかネットワーク上のFilebucketを指定することができます。代わりに、.で始まる値(例えば、.puppet-bak)を指定すると、Puppetはバックアップの拡張子としての値を、同じディレクトリのファイルのコピーを使用するでしょう。

Puppetは自動的にpuppetという名前のローカルFilebucketを作り、デフォルトでそこにバックアップします。サーバのFilebucketを使うには、コンフィグでそれを指定しなければなりません。

filebucket { main:
    server => puppet
}

puppetmasterdデーモンはデフォルトでfilebucketをつくり、そして通常このコンフィグによってメインサーバにバックアップすることができます。一度コンフィグでbucketを記述したなら、すべてのファイルにそれが適用されます。

file { "/my/file":
    source => "/path/in/nfs/or/something",
    backup => main
}

これは中央のサーバにファイルをバックアップします。

この時点で、filebucketを使う利点は、それぞれのマシンにバックアップファイルを散らばらせて持たなくても、ファイルの与えられたバージョンは一回バックアップされるだけで、そしてどのくらい古くても、手動でどんな与えられたファイルも復元できることです。結局transactionのサポートはfilebucketのファイルを自動的に復元することができるでしょう。

checksum

?ファイルが変化したかどうかどうチェックするかどうかです。 この状態はファイルコピーに内部的に使用されますが、Tripwire(ファイルの中身を管理する方法を除いた)のようなファイルを監視する目的にも使用することができます。ファイルのchecksumが監視されるべきかを指定することができ、次にほかのobjectからファイルにsubscribeして、たとえば、checksumの変化を知らせるイベントを受け取ることができます。正しい値はtime, mdlite, nosum, timestamp, md5, mtimeです。値はまた、次ともマッチします(?-mix:{md5|md5lite|timestamp|mtime|time}).

You can specify that a file's checksum should be monitored and then subscribe to the file from another object and receive events to signify checksum changes, for instance. Valid values are time, md5lite, nosum, timestamp, md5, mtime. Values can also match (?-mix:{md5|md5lite|timestamp|mtime|time}).

content

ファイルの内容を指定する文です。改行、タブおよびスペースはエスケープされる構文(改行のための\nなど)を使用することで指定することができる。 この変数の第一の目的は制限付きのtemplatingを提供することです。

define resolve(nameserver1, nameserver2, domain, search) {
    $str = "search $search
domain $domain
nameserver $nameserver1
nameserver $nameserver2
"

    file { "/etc/resolv.conf":
        content => $str
    }
}

このattributeはtemplating?とともに使うことで特に有用です。

ensure

?作ろうとするファイルが今存在するかどうかです。有効な値はabsent, present(ほとんどのファイル検査で存在することに相当する -- どのような存在するファイルのの形式にもマッチし、ファイルが存在しないのなら空ファイルを作成する ), file, directoryです。特記事項として、absentはファイルを削除するけれども、現在はディレクトリを再帰的に削除しません。

Whether to create files that don't currently exist. Possible values are absent, present (equivalent to exists in most file tests -- will match any form of file existence, and if the file is missing will create an empty file), file, and directory. Specifying absent will delete the file, although currently this will not recursively delete directories.

それらの値以外はsymlinkであると判断されます。例えば、次のテキストはリンクを作成します

# Useful on solaris
file { "/etc/inetd.conf":
    ensure => "/etc/inet/inetd.conf"
}

You can make relative links:

# Useful on solaris
file { "/etc/inetd.conf":
    ensure => "inet/inetd.conf"
}

?有効値の1つとして名前付けられたファイルに相対リンクを作る必要があれば、その前に./かその類のものを前に付けなければなりません。

If you need to make a relative link to a file named the same as one of the valid values, you must prefix it with ./ or something similar.

また、各ファイルに対応するディレクトリまたはリンクに対応しているディレクトリが、目標のディレクトリに位置するディレクトリ構造を作成することで、再帰的なシンボリックリンクを作ることも可能です。 有効値はlink、present, absent(またはfalse)、directory、fileです。値はまた(?-mix:.)と一致します。

force

ファイル操作を強制する。現在、リンクでディレクトリを取り替えた場合のみ使用されます。有効値はtrue, falseです。

group

どのグループがファイルを所有するかです。文法はグループ名またはグループIDのどちらでも可能です。

ignore

再帰の間に指定されたパターンに一致するfile actionを除外する変数です。Rubyの組み込みglobbingエンジンを使うので、shellのmetacharactersは十分にサポートされます。例えば [a-z]* などです。 ディレクトリ構造を伝わる一致は無視されます。例えば、*/* などです。

linkmaker

?再帰的ななリンク作成をするためのシンボリックリンクの形式によって使用される内部変数です。

An internal parameter used by the symlink type to do recursive link creation.

?file actionの間にリンクを扱う方法です。ファイルコピーの間に、followはリンクの代りに目標のファイルをコピーし、manageはリンク自体をコピーし、そしてignoreはまったくそれ自体を渡します。 コピーしなかった場合、manageとignoreは同等に振る舞い(ローカルの再帰の間に実際にはリンクを完全に無視できないので)、followはリンクが指すファイルを管理します。 有効値はfollow, manage, ignoreです。

How to handle links during file actions. During file copying, follow will copy the target file instead of the link, manage will copy the link itself, and ignore will just pass it by. When not copying, manage and ignore behave equivalently (because you cannot really ignore links entirely during local recursion), and follow will manage the file to which the link points. Valid values are follow, manage, ignore.

mode

?ファイルのmodeです。現在、相対的なmode指定は制限されています。ファイルの完全なmodeを指定しなければなりません。

Mode the file should be. Currently relatively limited: you must specify the exact mode the file should be.

owner

ファイルが所属するownerです。文はユーザ名またはユーザーIDのどれちらでも可能です。

path (namevar)

管理するべきファイルへのpathです。完全修飾でなければなりません。

purge

管理対象外のファイルをpurgeするかどうかです。もし設定されたfilebucketを持っていれば、purgeされたファイルはアップロードされますが、そうでなければ、これはデータを破壊します。なにをしようとしているのか本当に理解している場合に限り、生成されたファイルにこのオプションを使用してください。このオプションは再帰的にディレクトリを管理するときだけ意味を持ちます。有効値はtrue, falseです。

recurse

どの程度の階層で再帰的な管理をするかです。有効値はtrue、false, infです。値はまた(?-mix:[0-9] +$)と一致します。

replace

?存在する場合を除いて、ソースのファイルで置き換えられないかどうかです。これは単に初期設定のためにファイルソースを使用するために有用です。有効値はtrue(またはyes)、false(またはno)です。

Whether or not to replace a file that is sourced but exists. This is useful for using file sources purely for initialization. Valid values are true (also called yes), false (also called no).

source

現在のファイル上へファイルをコピーします。ファイルがいつコピーされるべきかを決定するにはchecksumを使います。有効値はファイルへの絶対パス、またはURIです。現在サポートされているURIのタイプはpuppetおよびfileです。

これはパペットが直接サポートしないアプリケーションに内容を入れるための主要なメカニズムの1つで、多くのシステムをまたいで変わらないコンフィギュレーション・ファイルに非常に有用です。例えば

class sendmail {
    file { "/etc/mail/sendmail.cf":
        source => "puppet://server/module/sendmail.cf"
    }
}

puppet内のファイルサービスを設定、使用する方法の情報についてはfileserver docsを見てください。

?複数ファイルのソースを指定すると、存在する最初のソースが使用されます。これはファイルのためのサーチパスへのどんな量指定することを可能にする:

If you specify multiple file sources for a file, then the first source that exists will be used. This allows you to specify what amount to search paths for files:

file { "/path/to/my/file":
    source => [
        "/nfs/files/file.$host",
        "/nfs/files/file.$operatingsystem",
        "/nfs/files/file"
    ]
}

これは、最初に見つけられたファイルをソースとして使用します。

?現在この機能を使うごとで、リンクをコピーすることはできません。

You cannot currently copy links using this mechanism; set links to follow if any remote sources are links.

sourceselect

すべての有効なソースからコピーか、最初の1つのみコピーするかどちらかです。有効値はfirst、allです。

target

リンクを作成するためのターゲットです。現在、シンボリックリンクが唯一のサポートされるタイプです。有効値はnotlinkです。値はまた、(?-mix:.)ともマッチします。

type

ファイル・タイプをチェックする読み取り専用のstateです。

A read-only state to check the file type.

filebucket

ファイルをバックアップするためのrepositoryです。もしfilebucketが定義されていないのであれば、ファイルは現在のディレクトリにバックアップされますが、filebucketはバックアップのためのrepositoryをホストかサイト全体のどちらかにすることができます。filebucketはそれ自身ではなんの働きもしませんが、そのかわり、ファイルオブジェクトのバックアップの値として指定することができます。

現在、filebucketは突如削除されたファイルの手動検索のためにのみ有効です(例えば、ログのmd5 sumを見て、filebucketからのそのsumのファイルを検索するなど)。しかしトランザクションが完全にサポートされたときに、filebucketはトランザクションを取り消しすることに使われるでしょう。

通常、一つのfilebucketをネットワーク全体に定義したいと思いますので、それにはデフォルトのバックアップ場所としてfilebucketを使います:

# bucketを定義する
# Define the bucket
filebucket { main: server => puppet }

# デフォルトのターゲットを指定する
# Specify it as the default target
File { backup => main }

puppetmasterサーバはデフォルトとしてfilebucketをつくり、デフォルトの設定として働きます。

Parameters

name (namevar)

filebucketの名前です。

path

ローカルのfilebucketのパスです。もしこれが指定されていなければ、bucketはリモートかつサーバが指定されていなければなりません。

port

リモートサーバがListenしているポートです。デフォルトでPuppetのポートは8140です。

server

filebucketを提供しているサーバです。もしこれが指定されていなければ、bucketはローカルかつパスが指定されていなければなりません。

group

グループを管理します。このtypeはグループを作成することだけが可能です。groupのmembershipは個々のユーザについて管理されるべきです。この要素のtypeはグループを作成するのに支持されたnative toolを使用し、通常native toolについての情報はPOSIX APIを検索するために使用します。直接/etc/groupなどを変更することはありません。

多くのPlatformのために、toolはgroupaddやその一族が使われます。例えばMac OS XにおいてはNetInfoが使用されます。これは現在設定することができませんが、もし絶対必要としているならば、お知らせください。

Parameters

allowdupe

重複するgidを許容するかどうかです。このオプションはFreeBSDでは効果がない(pwのmanページを参照)。有効な値はtrue, false。

ensure

オブジェクトがあるべき状態です。有効な値はabsent, present。

gid

グループのID。数値で指定しなければならない。もし指定されなければ自動的に決定されるが、システムごとにGIDが異なる状態になってしまい、おすすめできない。GIDはローカルシステムの基準によって決定される。

name

  • namevar

グループの名前。命名規約はシステムによって異なる。英字で始まる8文字以内の名前ならどのシステムでも問題ないだろう。

provider

バックエンドで利用するProviderの指定。これを指定する必要に迫られることはめったにない。Puppetは通常、あなたのプラットホームに適したProviderを発見する。有効なProviderは

  • groupadd: Group management via groupadd and its ilk. The default for most platforms Required binaries: groupmod, groupdel, groupadd.
  • netinfo: Group management using NetInfo. Default for operatingsystem == darwin. Required binaries: nireport, niutil.
  • pw: Group management via pw. Only works on FreeBSD. Default for operatingsystem == freebsd. Required binaries: /usr/sbin/pw

host

ホストのエントリを入れたり管理したりします。多くのシステムでは、エントリは/etc/hostsになるでしょうが、いくつかのシステム(特にOS X)においては異なった方法が取られます。

Parameters

mount

mount tableにmount情報を入れることを含めた、mountを管理します。実際の振る舞いはensureパラメータの値に依存します。

Parameters

notify

puppetdのrun-timeログに任意のメッセージを送ります。

Sends an arbitrary message to the puppetd run-time log.

Parameters

package

パッケージを管理します。現在、パッケージサポートには基本的に二種類にわかれます。いくつかのパッケージタイプ(yumやapt)はパッケージを受け取ることができ、他の(rpmやsun)はできません。これらのパッケージフォーマットは自身でファイルを受け取ることができず、正しいファイルをsourceパラメータで指示して使うことができます。

PuppetはPlatformに基づいて使っているパッケージフォーマットを自動的に推測しますが、パラメータを使ってそれを上書きできます。当然、rpmを使いたいことを指示したら、rpmが存在しなければなりません。

Parameters

adminfile

インストールするパッケージのためのデフォルトのパッケージを含んだファイルです。これは現在Solarisにおいてのみ使われます。この値は、システムのルールにしたがって有効にされます。Solarisの場合、それが絶対パスか/var/sadm/install/adminのどちらかであるべきです。

allowcdrom

aptにソースとしてcdromを許可することを伝えます。通常、aptはこれを試そうとするとbailします。正しい値はtrue,falseです。

category

A read-only parameter set by the package.

configfiles

既存の設定ファイルを残すか上書きするか。ほとんどのパッケージはこのパラメータをサポートしません。有効な値はkeep, replace。

description

A read-only parameter set by the package.

ensure

パッケージがあるべき状態。latestはできるだけ最新のパッケージを利用しようとし、それができなければエラーをスローします。パッケージ管理システムが対応しているものでは、特定のバージョン番号を指定することもできます。 有効な値はabsent, purged, present(installedも同義), latest, およびバージョン番号を直接指定する場合の(?-mix:.)。

instance

A read-only parameter set by the package.

name

  • namevar

パッケージの名前です。これはパッケージシステムが内部的に使い、しばしば(特にsolarisにおいて)人間には基本的に使いづらい名前です。抽象的なパッケージインストールをしたいのであれば、パッケージに共通の名前を与えるためにaliasを使うことができます。

# In the 'openssl' class
$ssl = $operationgsystem ? {
    solaris => SMCossl,
    default => openssl
}

# It is not an error to set an alias to the same value as the
# object name.
package { $ssl:
    ensure => installed,
    alias => openssl
}

. etc. .

$ssh = $operationgsystem ? {
    solaris => SMCossh,
    default => openssh
}

# Use the alias to specify a dependency, rather than
# having another selector to figure it out again.
package { $ssh:
    ensure => installed,
    alias => openssh,
    require => package[openssl]
}

platform

A read-only parameter set by the package.

provider

The specific backend for provider to use. You will seldom need to specify this -- Puppet will usually discover the appropriate provider for your platform. Available providers are:

  • apple
  • apt
  • aptitude
  • aptrpm
  • blastwave
  • darwinport
  • dpkg * freebsd
  • gem
  • openbsd
  • pkgdmg
  • portage
  • ports
  • rpm
  • rug
  • sun
  • sunfreeware
  • up2date
  • yum

responsiblefile

パッケージで質問される、どんな必要な答えも含んだファイルです。これは現在Solarisにおいてのみ使われます。値はシステムのルールに従って有効にされますが、通常絶対パスです。

root

A read-only parameter set by the package.

source

実際のパッケージを探す場所です。これはローカルのファイル(又はnetworkファイルシステム)か、指定したパッケージタイプが理解できるURLです。Puppetはファイルを検索しません。

status

A read-only parameter set by the package.

type

Deprecated form of provider.

vendor

A read-only parameter set by the package.

resources

他のresource typeを管理することができるmetatypeです。ここで指定されたどんなmetaparamも生成されたresourceに渡され、管理していないresourceを切り離せますが、noopをtrueに設定することで、削除することがログされるだけで、実際に起こらないようにできます。

schedule

Puppetのscheduleを定義します。scheduleが現在Puppetでどう実行されるかについて理解するのに重要なことは、要素が適用されるのを止めるために使われることができるだけであって、それが適用されていることを決して保障しないということです。

毎回、Puppetは設定を適用しますが、scheduleが正しく動いていることから排除しない要素のリストを集めるでしょうが、現在与えられた要素が与えられた時間に動くことを保障するシステムはありません。もしとても制限されたscheduleで指定するのであれば、PupetはそのSchedule内の時間でたまたま動いたら、要素が適用されるでしょう。そうでなければ、まったくその通りに動きません。

このように、期間や反復回数の組み合わせを、より広くschedule(2,3時間にわたるなど)をするのは当然のことになります。例えば、もしある要素を一回だけ実行するように制限したいのであれば、2から4時のあいだで、このようなscheduleを使うでしょう。

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

上のscheduleによって、Puppetが2~4時の間に動いた一回目のとき、このscheduleによるすべての要素は適用されますが、2~4時の間に、既にその日に一度動いているため、再び適用されることはなく、予定されたscheduleの範囲外のため、そのscheduleからはずれて適用されないでしょう。

Puppetは自動的にそれぞれの有効な期間、その期間と同じ名前でshceduleを作成します(例えば、一時間ごとで毎日)。加えて、puppetと名づけられたscheduleは、次のような属性とともに、デフォルトとして作って使われます。

schedule { puppet:
    period => hourly,
    repeat => 2
}

これによってデフォルトで30分毎に要素が適用されるでしょう。

This will cause elements to be applied every 30 minutes by default.

service

動作するサービスを管理します。Serviceのサポートは残念ながらPlatformによってばらつきが大きいです。いくつかのPlatformはとても少ない動いているサービスについての概念があり、いくつかは非常に成熟し強力な概念を持っています。Puppetのサービスのサポートは、一般にいかなる固有の短所も埋めあわせることができるでしょう(例えば、statusコマンドを持っていないなら、Puppetはservice nameにマッチングしながら、process tableでコマンドで探します)。しかし、より多くの情報の提供することでよりよい振る舞いを得ることができるでしょう。または、ただ非常によいserviceのサポートを持っているplatfomを使うことができます。

Parameters

binary

デーモンのパスです。これはinitスクリプトをサポートしていないシステムのためにただ使ってください。このバイナリはstartパラメータが提供されていなくても、サービスをstartするのに使われます。

enable

boot時にサービスをstartするの有効にするかどうかです。このstateはplatformによってまったく異なって振る舞いをします。可能な限り、それは与えられたサービスをenableかdisableにするlocalのツールに依存します。true/false/runlevels 有効値はtrue, falseです。

ensure

サービスが走っているべきかどうかです。true/false 有効値はrunnning(またはtrue), stopped(またはfalse)です。

hasrestart

initスクリプトがrestartオプションを持っているの指定です。なければ、initスクリプトのstopとstartが使われます。有効値はtrue, falseです。

hasstatus

statusコマンドの機能を、サービスのinitスクリプトが持っていることを宣言します。テストによって、さまざまなplatformにおいて、statusコマンドのようなものをサポートしていない、多くのinitスクリプトが見つかりました。したがって、手動で動かしているサービスがそのようなコマンドを持ってるかどうか指定しなければなりません。(またはstatus parameterを使って特定のコマンドを指定することができます。)

もし何も指定していないのであれば、サービス名がプロセステーブルから探されることになります。

name (namevar)

?実行するサービス名になります。この名前はサービスのサブシステムでサービスを探すために使われます。

The name of the service to run. This name is used to find the service in whatever service subsystem it is in.

path

initスクリプトを探すための検索pathです。

pattern

プロセステーブルを探すためのpatternです。これはinitスクリプトがサポートされていないplatformでサービスを止めるために使われたり、initスクリプトがstatusコマンドを含んでいないサービスにおいて、サービスの状態を決定するためにも使われます。

もしこれが指定されておらず、サービスの状態をチェックする必要がある場合、サービス名はnameが代わりに使われることになります。

?patternはstringかRubyの正規表現になります。

The pattern can be a simple string or any legal Ruby pattern.

provider

providerとして使うbackendの指定です。これはめったに指定する必要はないでしょう。Puppetは通常platformに適したproviderを見つけます。存在するproviderは以下になります。

  • base: もっとも単純なサービスのサポート形式です。この形式が動くにはサービスについて十分な指定をしなければなりません。最低限指定プロセスを開始するためのバイナリの指定し、これによって同じバイナリが、サービスを止めるために、プロセステーブルから見つけ出されることになります。initを使ってするように、start, stop, statusコマンドを指定するのが望ましいです。必要なバイナリ :kill
  • debian: Debian形式のinitの管理です。違いはupdate-rc.dによってサービスの有効化や無効化をサポートすることです。デフォルトのoperatingsystemはdebianになります。必要なバイナリ: /usr/sbin/update-rc.d
  • gentoo: Gentoo's form of init-style service management; uses rc-update for service enabling and disabling. Default for operatingsystem == gentoo. Required binaries: /sbin/rc-update.
  • init: Standard init service management. This provider assumes that the init script has not status command, because so few scripts do, so you need to either provide a status command or specify via hasstatus that one already exists in the init script.
  • redhat: Red Hat's (and probably many others) form of init-style service management; uses chkconfig for service enabling and disabling. Default for operatingsystem == redhatfedorasuse. Required binaries: /sbin/chkconfig.
  • smf: Support for Sun's new Service Management Framework. Starting a service is effectively equivalent to enabling it, so there is only support for starting and stopping services, which also enables and disables them, respectively. Default for operatingsystem == solaris. Required binaries: /usr/bin/svcs, /usr/sbin/svcadm.

restart

Specify a restart command manually. If left unspecified, the service will be stopped and then started.

running

A place-holder parameter that wraps ensure, because running is deprecated. You should use ensure instead of this, but using this will still work, albeit with a warning.

start

startコマンドを手動で指定します。多くのサービスのサブシステムがstartコマンドをサポートしているので、指定する必要はないでしょう。

status

statusコマンドを手動で指定します。指定せずにおくと、statusの方法は自動的に決定され、通常process tableのサービスを探します。

stop

stopコマンドを手動で指定します。

type

providerの推奨しない形式です。

sshkey

ssh host keyを入れたり管理できます。この時点で、このtypeは/etc/ssh/sshknownhostsのなかにkeyをいれる方法だけを知っており、まだauthorized keyの管理はできません。

tidy

指定した評価基準に基づいた望まないファイルを削除します。複数の評価基準は、大きすぎるが十分に古くないファイルがまだ片付けられていないといったように、orが使われます。

user

ユーザーを管理します。このTypeはシステム上でユーザーを作成するのに使われますが、ノーマルユーザーを管理するために有用ないくつかの機能が欠けています。

このTypeは規定されたネイティブツールを用いてグループの作成を行い、POSIX APIを用いてそれらの情報を読み取ります。/etc/passwdを直接編集するとか、それに似たようなことはしません。

Features

  • allows_duplicates: 同じUIDを持つユーザーの作成
  • manages_homedir: ホームディレクトリの作成及び削除
Providerallows_duplicatesmanages_homedir
netinfo
pw
useraddXX

Parameters

allowdupe

重複するUIDを許容するか。有効な値は true, false のいずれか。

comment

ユーザーの説明。通常はユーザーのfullnameを入れる。

ensure

このオブジェクトがあるべき状態。有効な値は absent, present のいずれか。

gid

このユーザーのプライマリグループ。数値またはグループ名文字列で指定可能。

groups

ユーザーがメンバーであるグループ。(別途指定している)プライマリグループはここでは指定しないべき。複数のグループを指定する時は配列を利用する。 (訳注:group同様に文字列でも数値でも指定可能)

home

このユーザーのホームディレクトリ。ディレクトリの作成は別途行わなければならず、ここではディレクトリが実際に存在するかをチェックしない。

managehome

ユーザーを管理する際にホームディレクトリも管理するか。有効な値は true, false のいずれか。

membership

ユーザがmemberである唯一のgroupとして扱われるべきであるか、またはそれらが単に最小のmembership listとして扱われるべきであるかを指定されたgroupです。有効な値はinclusive, minimumです。

name

  • namevar

ユーザー名。OSごとに制約が異なる。8文字以内かつ、1文字目を英字にするのが無難。

provider

バックエンドのProviderを指定する。この機能を必要とするケースは稀と思われる。Puppetは通常、そのプラットホームに最適なProviderを自動的に発見して使用する。有効な値は下記の通り。

  • netinfo: NetInfoでユーザーを管理する。
  • pw: FreeBSD上でpwを用いてユーザーを管理する。
  • useradd: useradd, usermod, userdel等を用いてユーザーを管理する。User management via useradd and its ilk. Required binaries: usermod, userdel, useradd. Supported features: allows_duplicates, manages_homedir.

shell

ユーザーのログインシェル。存在するものを指定しなければならない。

uid

数値で指定しなければならない。指定しない場合には自動的に選択されるが、同じユーザーがシステムごとに異なるuidを持つことになるので、おすすめできない。

(続き)This is especially noteworthy if you use Puppet to manage the same user on both Darwin and other platforms, since Puppet does the ID generation for you on Darwin, but the tools do so on other platforms.

yumrepo

yum repositoryのクライアント側設定です。Repository設定は/etc/yum.confを解析することで、reposdirによって示されたファイルになります(詳しくはyum.conf(5) を見てください)。

多くのパラメータはyum.conf(5)のドキュメントと同じです。

yumがbaseurlのための例としてサポートする連続した行はサポートされません。includeディレクティブでincludeされたファイルのアクセスはまったく行いません。

zone