On 18/06/13 01:24, Daniel DeLeo wrote:
On Sunday, June 16, 2013 at 7:25 PM, Jeffrey Jones wrote:
On 15/06/13 06:22, Steven Danna wrote:
On 6/14/13 7:57 AM, Julian C. Dunn wrote:
Hey Jeffrey: I don’t see your recipe code anywhere but judging from the
gist you have something like this:
connector::default has include_recipe "torquebox-web-server"
torquebox-web-server::default has include_recipe “yum::epel”
Is “yum” anywhere in your metadata for any of those cookbooks?
Even I’m not entirely sure whether include_recipe also loads attributes
from the dependent cookbook…
I have added the debug output after adding the "include_attribute"
It looks like the old error has been fixed but a new error has appeared.
“[2013-06-17T02:12:46+00:00] FATAL: NameError: Cannot find a resource
for yum_key on centos version 6.4”
I am guessing that the attributes/epel.rb file is being executed by the
selection logic inside the file is failing for some reason?
https://gist.github.com/rurounijones/5771208 (“Add attribute” section
for full debug output)
As Julian said, the key here is that you need to specify the
dependency between your cookbook and the yum cookbook in the
Chef 11 uses the metadata to figure out a sane order for cookbook
loading. If a cookbook doesn’t appear in either the run list or
dependencies of a cookbook in the run_list, it will not get loaded
correctly. As you’ve seen, you can work around this a little bit with
include_recipe and include_attribute, but you won’t load libraries,
resource definitions, or LWRPs. Adding the dependency in the metadata
is the only way to make those work.
I have the the “torquebox-web-server” cookbook which is wrapped and I
have the “connector” cookbook which is the wrapper.
In the “torquebox-web-sever” cookbook’s “metadata.rb” file I have the
line: depends ‘yum’, '2.2.2’
So the dependency is specified in the wrapped cookbook and using the
torquebox-web-server cookbook directly works fine.
In the “connector” cookbook I depend on the "torquebox-web-server"
cookbook using a Berksfile entry (Which, it has just occurred to be, may
be a factor in this issue).
My understanding is that Chef should pick up the dependencies from the
wrapped cookbooks automatically during convergence so that they do not
need to be re-declared in the wrapper cookbook. Is my understanding correct?
I am not sure how exactly it does the dependency checking. Does
specifying a dependency is the Berksfile means it won’t be properly
picked up by chef in this scenario?
Thanks for the information.