Для понимания экспортируемых ресурсов в Марионетке, следующая документация была прочитана. После чтения документации понимание было то, что экспортируемые ресурсы состоят из объявления и сбора.
Попытка
На основе документации и понимания экспортируемых ресурсов в Марионетке был создан следующий код:
class test {
@@file { "/tmp/$hostname": }
File <<| |>>
}
Ожидаемый
Ожидание состояло в том, что файл/tmp/vm-one будет создан
Текущий
Никакой файл не был создан
[vagrant@vm-one modules]$ sudo puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for vm-one.domain
Info: Applying configuration version '1421499164'
Notice: Finished catalog run in 0.10 seconds
Для правильной работы экспортируемых ресурсов необходимо настроить PuppetDB. Они не будут работать без PuppetDB. Кроме того, вам часто требуются два запуска Puppet для применения ресурсов.
За кулисами происходит следующее:
марионеточный агент запрашивает каталог у главного
главного компилирует каталог (извлекает экспортированные ресурсы из PuppetDB и сохраняет вновь найденные экспортированные ресурсы обратно в PuppetDB)
мастер доставляет каталог агенту
Конечно, экспортировать ресурсы в манифесте для одного узла бесполезно. Идея, лежащая в их основе, заключается в том, что отдельные узлы могут сообщать о некоторых из своих ресурсов, которые позже собираются другим узлом, на котором вы хотите, чтобы они были применены.
Вот пример: если вы хотите вставить проверки Nagios в каждый из ваших services, вы не хотите применять и собирать эти проверки на узлах, где находятся службы, но вы хотите собрать их все на узле Nagios.
Надеюсь, это поможет.