我正在寻找一种方法来测试客户端中是否存在文件(仅测试而不是创建)。我在 chef 中找到了方法(File.exists),但使用 puppet 并不简单。
提前致谢。
答案1
如果你使用的是 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',
}
答案2
您应该创建自己的函数或将 exec 与 onlyif 命令一起使用。例如:
exec { "mycommand":
path => "/usr/bin:/usr/sbin:/bin",
onlyif => "test -f /etc/blalba" //yours command
}