如何做一个文件/目录有条件在Puppet?

我想在puppet中写一个函数,如果传入的目录path不存在,将会fail

if File["/some/path"]总是返回true,并且if defined(File["/some/path"])只有当资源在puppet中定义时才返回true,而不pipe它是否实际存在。

有一种方法来做到这一点与简单的if语句?

谢谢

解决方法:在exec“test”上使用onlyif,并在要执行的操作中要求:

 exec {"check_presence": command => '/bin/true', onlyif => '/usr/bin/test -e /path/must/be/available', } whatever {"foo...": ..... require => Exec["check_presence"], } 

记住:清单在主文件上被编译。 除了提交的事实外,他们对客户一无所知。 所以要么写一个有这个信息的事实,要么退后一步,告诉我们你实际上想要解决的问题,所以我们可以提出一个比if语句更好的方法。

我也很难弄清楚,如果一个目录不存在,如何保持模块运行。 这是我发现,为我工作。

 exec { 'module_name': command => "command to run with variables", # Double quotes for Variable interpolation path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:", onlyif => 'test -d /mydirectory', } 

添加的道路是真正的伎俩对我来说。 由于某些原因,即使我添加了testing命令的path(例如/bin/test它似乎也不能正常工作。

希望这有助于其他可能有同样问题的人。