假设我想让hostB
为每个puppet节点拥有一个独特的文件,但是hostB
只知道hostB
。
理论上讲,如果我们允许hostB
写一个自定义事实( my_special_owner
),然后通过hostA
的my_resource
定义中的my_resource
函数来读取这个事实,那么理论上可以这样做。 但是这似乎太脏了:它污染事实名称空间与无意义的东西,可能会导致名称冲突。 对于这样一个简单的事情也是很多的编码。
以下是我所想到的一个模型:
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文档。 例:
File <| |> { owner => 'foo', }