人偶测试文件是否存在


8

我正在寻找一种方法来测试客户端中是否存在文件(只是测试而不是创建)。我已经在厨师中找到了(File.exists)的方法,但是使用木偶并不是那么简单。

提前致谢。

Answers:


6

如果您使用的是Puppet 2.6.6+,则无需执行程序即可执行“本机”操作:

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 puppet来说是很棒的。香港专业教育学院一直在2.6.0之前的版本,必须编写我自己的ruby函数来进行文件存在/空检查。
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 2011年

谢谢,但是文档中没什么有趣的。
bazic 2011年

香港专业教育学院更新了我的答案
MealstroM 2011年

1
@MealstroM:会不会creates => '/etc/blabla'比“ onlyif” 更好?
freiheit

1
@MealstroM:在这种特殊情况下,creates将具有相同的结果,并且更加简单(并且速度更快)。是的,通常onlyif确实提供了更大的灵活性。
freiheit
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.