假设我想hostB
为每个 puppet 节点创建一个不同的文件,但所有者只有hostB
.
理论上可以做到,如果我们允许hostB
编写一个自定义事实 ( my_special_owner
),然后通过定义query_facts
中的函数读取该事实。但这似乎太脏了:它用无意义的东西污染了事实命名空间,可能导致名称冲突。对于这样一个简单的事情,它也需要大量的编码。my_resource
hostA
这是我想到的模型:
define my_resource() {
$owner=${my_collector::owner} #This attempt fails
file{$name: ensure=>exists, owner=>$owner}
}
node hostA {
@@my_resource{"/tmp/file1.tmp"}
}
class my_collector($owner) {
# How to pass $owner to the collector below?
My_resource <<| |>>
}
node hostB {
class {'my_collector': owner=>bob}
}
有关自定义收集器属性的 Puppet 文档,请参阅本节。例子: