2014-05-21 4 views
2

Я работаю с кулинарной книгой apache2 и моей собственной поваренной книгой. В моем рецепте я хочу использовать определение web_app для сайта и иметь его использовать шаблон, определенный в подателю поваренной книгеКак разрешить куклой обложки использовать шаблон своего родителя в определении?

#my-apache2/recipes/my-site.rb 

web_app "my-site" do 
    #template not specified here, so it should use default 
    server_name "my-site.com" 
    docroot "#{app_dir}/public" 
end 

что приводит к

Error executing action `create` on resource 'template[/etc/httpd/sites-available/my-site.conf]' 
================================================================================ 

Chef::Exceptions::FileNotFound 
------------------------------ 
Cookbook 'my-apache2' (1.0.0) does not contain a file at any of these locations: 

, потому что он смотрит в my-site поваренной книги , а не каталог шаблонов apache2.

Я попробовал то, что работал на других ресурсах:

resources("template[web_app.conf.erb]").cookbook "my-apache2" 

но путь это один в динамически генерируется на основе параметра ресурса (name).

#apache2/definitions/web_app.rb 

application_name = params[:name] 
template "#{node['apache']['dir']}/sites-available/#{application_name}.conf" do 
    source params[:template] 
... 

Так что возвращает это возвращает ошибку

Chef::Exceptions::ResourceNotFound 
---------------------------------- 
Cannot find a resource matching template[web_app.conf.erb] (did you define it first?) 

Есть ли способ, чтобы заставить его использовать шаблон подателя поваренного книги без копирования его в мою кулинарную книгу обертки?

ответ

4

Глядя на источник определения: https://github.com/onehealth-cookbooks/apache2/blob/45f08b4060f23573dbec65be32bf25baee56b734/definitions/web_app.rb#L35

Если вы предоставите параметр кулинарной к определению, то он будет искать файл шаблона в любой кулинарной вы укажете. (В этом случае это звучит так, как будто вы хотите указать apache2)

web_app "my-site" do 
    server_name "my-site.com" 
    docroot "#{app_dir}/public" 
    cookbook 'apache2' 
end