[chef] Re: Re: Default attributes are merging


Chronological Thread 
  • From:
  • To:
  • Subject: [chef] Re: Re: Default attributes are merging
  • Date: Mon, 21 Nov 2011 17:25:12 +0100

Adam Jacob 
< >
 writes:


>> My bind cookbook has the following default attributes:
>> (cookbooks/bind/attributes/default.rb)
>> default[:bind][:upstream_servers] = ['8.8.8.8','8.8.4.4']  # e.g. the 
>> google DNS servers
>>
>> However in my "production" environment file, I change them thus:
>> (environments/production.rb)
>> default_attributes({ "bind" => { "upstream_servers" => [ 
>> "xxx.xxx.xxx.xxx", "yyy.yyy.yyy.yyy" ] })
>>
>> When my template gets written however, I get all four values printed:
>>    forwarders {
>>    8.8.8.8;
>>    8.8.4.4;
>>    xxx.xxx.xxx.xxx;
>>    yyy.yyy.yyy.yyy;
>>    };
>>
>> Have I misunderstood the way attributes get overwritten? I thought from 
>> this wiki page, the environment attributes OVERRIDE the cookbook attributes
>http://wiki.opscode.com/display/chef/Attributes
>>
>> I know I can obviously use override_attributes rather than 
>> default_attributes… but I didn't expect this to happen anyway

> If they are at the same precedence level, they get deep merged
> together.  Use precedence to override the value entirely.

hi,

Can you be more accurate please ?
Reading http://wiki.opscode.com/display/chef/Attributes it seems to me
there can't be same precedence levels.

It says "default attributes applied in an environment" has
higher precedence than "default attributes applied in an attributes
file"


Also, can http://wiki.opscode.com/display/chef/Deep+Merge be more
accurate as well please ?
Here it doesn't work at all as written on this page.
see https://gist.github.com/1376294
 

-- 
Laurent



Archive powered by MHonArc 2.6.16.

§