- From: Noah Kantrowitz <
>
- To:
- Subject: [chef] Re: Re: Re: Re: Re: The Application Cookbook Pattern vs. String / Node Attribute Interpolation in Attributes files
- Date: Tue, 6 Aug 2013 11:09:59 -0700
http://tickets.opscode.com/browse/CHEF-4234
--Noah
On Aug 6, 2013, at 11:08 AM, Torben Knerr wrote:
>
Thanks, that works!
>
>
I'm using a slightly modified variant now which I find a bit more readable:
>
`node.from_file(run_context.resolve_attribute("java", "default"))`
>
>
Found the hint here:
>
http://docs.opscode.com/chef/essentials_cookbook_recipes.html#reload-attributes
>
>
Btw: mind posting the link to the Jira issue?
>
>
Cheers, Torben
>
>
>
>
On Tue, Aug 6, 2013 at 7:46 PM, Noah Kantrowitz
>
<
>
>
wrote:
>
Now that Jira is back, just add this to the bottom of your attributes file:
>
node.from_file(run_context.resolve_attribute(*parse_attribute_file_spec("java")))
>
>
--Noah
>
>
On Aug 6, 2013, at 7:30 AM, Torben Knerr wrote:
>
>
> I also played around with `include_attribute` in the recipe, in the
>
> attributes file etc. but couldn't make it work. I also tried renaming my
>
> application cookbook and attribute files so that they come alphabetically
>
> before "java", but that didn't make any difference too (surely because of
>
> the `include_recipe "java"`).
>
>
>
> I'm looking forward to the workaround mentioned by Noah, couldn't find it
>
> via Google so far.
>
>
>
> Btw: have you considered forking and "fixing" the Java cookbook rather
>
> than duplicating the attributes logic?
>
>
>
>
>
> On Mon, Aug 5, 2013 at 7:48 PM, Joseph Holsten
>
> <
>
>
> wrote:
>
> I just copy-pasta'd the java.java_home and java.openjdk_packages logic
>
> for a pr to the nexus cookbook:
>
> https://github.com/RiotGames/nexus-cookbook/pull/43
>
>
>
> I attempted a well timed `include_attribute 'java'`, but couldn't make it
>
> work.
>
>
>
> If there is a less terrible way, I'd love to know.
>
> --
>
> ~j
>
>
>
> On 2013-08-05, at 09:56, Torben Knerr
>
> <
>
>
> wrote:
>
>
>
> >
>
> > Ohai Chefs,
>
> >
>
> > given an application cookbook trying to installing Java 7:
>
> >
>
> > ```sample-app/recipes/default.rb
>
> > node.set['java']['jdk_version'] = "7"
>
> > include_recipe "java"
>
> > ```
>
> >
>
> > It will always install Java version 6 because the node attributes from
>
> > the Java cookbook have already been interpolated when the sample-app
>
> > recipe is evaluated:
>
> >
>
> > ```java/attributes/default.rb
>
> > ...
>
> > default['java']['jdk_version'] = '6'
>
> > ...
>
> > when "debian"
>
> > ...
>
> > default['java']['openjdk_packages'] =
>
> > ["openjdk-#{node['java']['jdk_version']}-jdk", "default-jre-headless"]
>
> > ...
>
> > ```
>
> >
>
> > The only way to "correctly" pass in the java/jdk_version attribute is
>
> > from external, e.g. via environment files or dna.json etc... That
>
> > works, but actually I consider the JDK version an implementation detail
>
> > of the application cookbook and don't want to expose it via the above
>
> > files.
>
> >
>
> > How can you deal with that?
>
> >
>
> > Is there a possibility to re-evaluate the attributes file before you
>
> > `include_recipe` it? And would this be a good idea at all?!?
>
> >
>
> > Any ideas or workarounds?
>
> >
>
> > Cheers,
>
> > Torben
>
>
>
>
>
>
Archive powered by MHonArc 2.6.16.