Предположим, что я хочу hostB
иметь отличный файл для каждого марионеточного узла, но с владельцем, который только известен 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 о настройке атрибутов сборщика. Пример:
File <| |> {
owner => 'foo',
}