[chef] The Application Cookbook Pattern vs. String / Node Attribute Interpolation in Attributes files


Chronological Thread 
  • From: Torben Knerr < >
  • To:
  • Subject: [chef] The Application Cookbook Pattern vs. String / Node Attribute Interpolation in Attributes files
  • Date: Mon, 5 Aug 2013 18:56:44 +0200


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.

§