Предположим, я хочу 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',
}