ファイルが存在するかどうかのパペットテスト


8

クライアントにファイルが存在するかどうかをテストする方法を探しています(作成ではなくテストするだけです)。chefで(File.exists)の方法を見つけましたが、パペットでは簡単ではありませんでした。

前もって感謝します。

回答:


6

Puppet 2.6.6以降を使用している場合、execなしでこれを行う「ネイティブ」な方法:

file { '/path/to/myfile':
  ensure => 'present',
  audit  => 'all',
}

(この機能はPuppet 2.6.0以降に存在しますが、監査にはいくつかの問題があり、2.6.6リリースでのみうまく機能しなくなりました。)

古いバージョンを使用している場合は、リソースをnoopモードで実行するように指示することもできます。これにより、Puppetが実行され、ファイルが存在しない場合にメッセージが表示されます。

file { '/path/to/myfile':
  ensure => 'present',
  noop   => 'true',
}

ええ。これは新しいバージョンのovパペットに最適です。2.6.0より前のバージョンで作業していて、ファイルの存在/空のチェックのために独自のルビ関数を作成する必要があります。
MealstroM 2011

9

独自の関数を作成するか、execをonlyifコマンドで使用する必要があります。何かのようなもの :

exec { "mycommand":
  path => "/usr/bin:/usr/sbin:/bin",
  onlyif => "test -f /etc/blalba" //yours command 
}

== presentは、ファイルが存在しない場合にファイルを作成します。bazicはテストするだけで作成はしません。docs:docs.puppetlabs.com/references/stable/type.html#file
shakalandyを

おかげで、ドキュメントには何も興味深いものはありません。
バジック

iveが私の回答を更新
MealstroM

1
@MealstroM:「creates => '/etc/blabla'」は「」よりも優れていませんonlyifか?
フライハイト

1
@MealstroM:この特定のケースでcreatesは、同じ結果が得られ、はるかに単純になります(そして少し高速になります)。はい、一般的にonlyifはより多くの柔軟性を提供します。
フライハイト、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.