假设我想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}
}
答案1
看本节有关自定义收集器属性的 Puppet 文档。示例:
File <| |> {
owner => 'foo',
}