Как перебирать экземпляры определенных типов в Puppet

Я хочу перебрать все экземпляры определенных типов (например, Apache::Vhost). Однако в этом цикле перечислены только мои ресурсы в области видимости.

<% scope.catalog.vertices.each do |resource| -%>
<%# if resource.type == "Apache::Vhost" -%>
#Include <%= resource.title %>
<% end -%>

person krogon    schedule 14.04.2014    source источник
comment
Вы не должны этого делать, так как это вводит зависимости порядка синтаксического анализа. Я не думаю, что есть надежные способы сделать это.   -  person bartavelle    schedule 14.04.2014
comment
У меня есть зависимость для этого Class['Apache::Params'] -> Apache::Vhost ‹| |›   -  person krogon    schedule 14.04.2014
comment
Зависимости между ресурсами разрешаются в конце, а ваш шаблон будет разрешен в середине компиляции каталога. Это означает, что если вы определяете apache::vhost после (где after не определено, поскольку у вас нет гарантий порядка синтаксического анализа, AFAIK), вы определили свой шаблон, он не появится.   -  person bartavelle    schedule 14.04.2014


Ответы (1)


Ходить по каталогу во время компиляции («создание каталога») — плохая идея.

Если вам действительно нужна эта функциональность, подумайте о переносе кода итерации в специальный поставщик, который сгенерируйте содержимое файла, похожее на то, что пытается сделать ваш основной шаблон в данный момент.

На этапе синхронизации вы можете безопасно получить доступ к полному каталогу через self.resource.catalog.

person Felix Frank    schedule 15.04.2014