人形の言語では、ループはありません。
しかし、あなたが代わりにタイトルの単純な文字列の配列を使用し、同じのparamsで同時に複数のリソースを宣言することができます。
$b = '/opt/app'
file { [ "$b/app1", "$b/app2" ]:
ensure => directory,
owner => 'root',
group => 'root',
mode => 0644,
}
あなたはまた、別のと同じタイプの多くのリソースを宣言することができますもう少しコンパクトfile
と{
sおよび}
Sを繰り返すよりも;
、各リソースを終了してparamsは:特定の場合
file {
[ "$b/app1", "$b/app2" ]:
ensure => directory,
owner => 'root',
group => 'root',
mode => 0755;
[ "$b/app1/secret", "$b/app2/secret" ]:
ensure => directory,
owner => 'root',
group => 'root',
mode => 0700;
}
が
file { "/opt/app":
source => "puppet:///appsmodule/appsdir",
recurse => true;
}
(それは人形をソースとして使用するために、そのディレクトリ構造のソースを持つ必要であろう)
をあなたがdefine a new resource typeはの部分を再利用することができます。ファイルは、あなたがソースと使用再帰を設定することができますPARAM複数回:http://www.puppetlabs.com/blog/ruby-dsl/(私はそれを使ったことがない、しかし):
人形2.6以降で
define foo {
file {
"/tmp/app/${title}":
ensure => directory,
owner => 'root',
mode => 0755;
"/tmp/otherapp/${title}":
ensure => link,
target => "/tmp/app/${title}",
require => File["/tmp/app/${title}"]
}
}
foo { ["app1", "app2", "app3", "app4"]: }
、あなたが求めることができるすべてのループ機能を持って利用できるRubyのDSLがあります。 Puppet 3.2では、彼らはexperimental loopsをいくつか紹介しましたが、これらの機能は後のリリースで変更されるか廃止される可能性があります。
ありがとうございます!どのようにこの作業を取得する:file {[X、Y]:sure = link、target => [X1 + X、Y1 + Y]}? – user425720
定義を使うことができます。私の答えに – freiheit
ああ完璧な例を追加しました。ありがとう! – user425720