Я пытаюсь найти способ динамически применять ресурс шаблона ко всем файлам, которые находятся в папке внутри папки шаблонов поваренной книги. что-то вроде:
Dir.foreach("../templates/default/shared/") do | file | # This is the wrong line...
template "/home/admin/shared/#{file}" do
source "shared/#{file}"
…
end
end
как мне это сделать? Я стараюсь не использовать отдельный список всех файлов в этом каталоге в качестве переменной ... спасибо.
Ваш код будет выполняться в контексте узла, поэтому ваш код Ruby (Dir.foreach
) потребуется проверить локальный кеш узла. В моей установке Chef путь к локальному кешу требуется для моего шаблона конфигурации Chef-client, поэтому у меня есть этот атрибут: node[:chef][:cache_path]
.
Так:
Dir.foreach("#{node[:chef][:cache_path]}/cookbooks/the_cookbook/templates/default/shared/")
РЕДАКТИРОВАТЬ: в современных конфигурациях Chef шаблоны не будут существовать на сервере, пока они не понадобятся. Вам нужно будет добавить это в свой client.rb:
no_lazy_load true