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-siteapache2 テンプレート ディレクトリではなく、クックブックを参照しているためです。

他のリソースで何が機能したかを試しました:

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

1 に答える 1