Answers:
您的意思是“测试是否已定义资源”吗?如果您定义资源(例如file {}
,等等),Puppet将创建您所描述的内容(如果尚不存在的话)(ensure => present
当然,假设您通过了)。
要检查目录中是否已定义资源:
mark-draytons-macbook:~ mark$ cat test.pp
file { "/tmp/foo": ensure => present }
if defined(File["/tmp/foo"]) {
alert("/tmp/foo is defined")
} else {
alert("/tmp/foo is not defined")
}
if defined(File["/tmp/bar"]) {
alert("/tmp/bar is defined")
} else {
alert("/tmp/bar is not defined")
}
mark-draytons-macbook:~ mark$ puppet test.pp
alert: Scope(Class[main]): /tmp/foo is defined
alert: Scope(Class[main]): /tmp/bar is not defined
notice: //File[/tmp/foo]/ensure: created
注:defined()
是依赖解析顺序。
只是,
file{ "$local_container":
ensure => directory,
replace => false,
}
"$local_container"
文件已经在其他位置定义(例如,要控制权限/所有者的内容),则不能两次定义相同的资源。