[chef] Node attribute merge issue


Chronological Thread 
  • From: Tom < >
  • To:
  • Subject: [chef] Node attribute merge issue
  • Date: Wed, 5 Feb 2014 11:54:28 +0000

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.

§