Назад | Перейти на главную страницу

Chef - ресурс динамического шаблона с несколькими файлами

Я пытаюсь найти способ динамически применять ресурс шаблона ко всем файлам, которые находятся в папке внутри папки шаблонов поваренной книги. что-то вроде:

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