[chef] Re: Node attribute merge issue


Chronological Thread 
  • From: George Miranda < >
  • To: " " < >
  • Subject: [chef] Re: Node attribute merge issue
  • Date: Wed, 5 Feb 2014 13:26:42 +0100

Hi Tom,

Your understanding of how attributes are merged should indeed work.  In your pasted code, it looks like you’re not interpolating the value of ‘k’, which would be why it’s not working.

Two things:

1) Recommended best practice when setting node attributes is to stick to using defaults and let merge order do the rest.  You could set default attributes once you’re using the value of k and that should also work.  It leaves you with plenty of remaining options if you later find yourself needing to then override these values elsewhere.

2) chef-solo now support environments.  So you could use the built-in mechanisms for this rather than reinventing them by setting your environment data in a location outside of this repo and pointing to it by setting ‘environment_path’ in your solo config file.

HTH,
-g



On Wed, Feb 5, 2014 at 12:54 PM, Tom < " target="_blank"> > wrote:
Hi,

I am using chef-solo and I am trying to use data bags as a way of controlling some external environment data.

My workflow dictates that all cookbooks are stored in one git repository and I tag production releases.
To remove sensitive and changeable env data from this repository, I have moved certain attributes into data bags and at run time I am loading those data bags from a directory in the solo config file.

I am trying to merge the data bag attributes into node attributes in a recipe doing the following:

------
envdata = data_bag_item("databag", "env-json-file")

envdata.each do |k,v|
  node.override['k'] = v
end
--------

where my data bag is like this:
------
 
{
  "id": "env-json-file",
  "cookbook_name": {
    "memcache": {
      "servers": [
        "server1:11211",
        "server2:11211"
        ]
      }
    }
}
-------

I would expect node['cookbook_name']['memcache']['servers'] to have become the above array, but I am still finding the default attribute from the cookbook to be the value used.

Have I missed something fundamental in how attributes are merged, especially if they are several layers deep in a Hash?

Thanks,

Tom




--



Archive powered by MHonArc 2.6.16.

§