Re: attribute value availability + the implicit dependency graph and chef-deploy patch


Chronological Thread 
  • From: Adam Jacob <adam@opscode.com>
  • To: chef@lists.opscode.com
  • Subject: Re: attribute value availability + the implicit dependency graph and chef-deploy patch
  • Date: Thu, 23 Apr 2009 11:42:01 -0700

On Thu, Apr 23, 2009 at 9:31 AM, Ian Kallen <spidaman.list@gmail.com> wrote:
> Last night I was seeing an issue where provisioning "apache + passenger
> worked" but "apache + passenger + rails app" (deploying the rails app
> w/chef-deploy) was failing. In the first scenario, the passenger cookbook's
> attributes was able to access the apache cookbook's attributes. In the
> second scenario, the apache attributes were *not* accessible to passenger's.
> But in all cases apache attributes are accessible in the passenger recipe
> script. In the second scenario I launched with { "recipes" : [ "railsapp" ]
> }, since the rails app recipe has 'include_recipe "passenger"' and the
> passenger recipe has 'include_recipe "apache"' I expected the dependencies
> declared via include_recipe to be traversed to make the attribute values
> available. But apparently that doesn't work, cookbook processing order is
> random (?!). This was really frustrating to debug (the symptom was template
> names/paths mysteriously null valued and fairly useless error messages in
> the ensuing stacktrace);  are there docs I've overlooked on how cookbooks
> relate to each other as far as execution order and data model life cycles?
> <fujin> mentioned plans for something like a "require_attribute" operator in
> the conception phase, which sounds great, though it seems like requiring a
> recipe should be sufficient to carry attribute values forward; there's a
> dependency graph already implied by the "require_recipe" operator. If there
> are docs I've overlooked, forgive the length and thanks for reading this far
> :)

The issue is that Attributes are parsed before the recipes - that
means we you can't use the recipe inclusion for attribute file
ordinality.

http://wiki.opscode.com/display/chef/Anatomy+of+a+Chef+Run

Libraries are loaded first, then Attributes, then Definitions,
followed by Recipes.

(This is because you may have an Attribute that is set in one
cookbook, but utilized in another.)

Adam

-- 
Opscode, Inc.
Adam Jacob, CTO
T: (206) 508-4759 E: adam@opscode.com



Archive powered by MHonArc 2.6.16.

§