这样的东西会起作用:
$dir = "/usr/dir1"
exec { "chk_${dir}_exist":
command => "true",
path => ["/usr/bin","/usr/sbin", "/bin"],
onlyif => "test -d ${dir}"
}
file {"${dir}/test.txt":
ensure => file,
owner => 'root',
group => 'root',
mode => '0750',
require => Exec["chk_${dir}_exist"],
}
说明:
onlyif => “test -d ${dir}”
表示仅在test -d的输出为true时才创建Exec资源.
require =>执行[ “CHK _ ${DIR} _exist”]
表示仅在Exec资源存在时才创建文件资源.
如果该目录不存在,则puppet运行将生成错误,指示它无法创建File资源,因为Exec资源不存在.这是预期的,可以安全地忽略,因为其余的木偶目录仍然被应用.
如果该目录存在,则创建并应用文件资源.