如何在 Puppet 中有条件地存在文件/目录?

dda*_*rio 19 puppet

我正在尝试在 puppet 中编写一个函数,fail如果传递的目录路径不存在,它将执行。

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

有没有办法用一个简单的if语句来做到这一点?

谢谢

Pas*_*iel 34

解决方法:在 exec "test" 上使用 onlyif 并在您要执行的操作中要求它:

exec {"check_presence":
  command => '/bin/true',
  onlyif => '/usr/bin/test -e /path/must/be/available',
}

whatever {"foo...":
  .....
  require => Exec["check_presence"],
}
Run Code Online (Sandbox Code Playgroud)

  • 哦,那是邪恶的,我喜欢它:-) (6认同)
  • 好主意,但这意味着在每次 Puppet 运行时都会有一个“Exec[check_presence]/returns:执行成功”的通知,这真的很烦人!更好的是: exec { 'check_presence': command => '/bin/false',除非 => '/usr/bin/test -e /path/must/be/available', } 这会做同样的事情,但是只会在路径确实不存在时创建错误/通知。 (6认同)
  • 任何导致“要求”失败的东西都会给出一个错误,因为无论是使用 onlyif 还是除非…… (2认同)