- From: Daniel DeLeo <
>
- To:
- Subject: [chef] Re: merge hash attribute in chef-client --local-mode
- Date: Fri, 22 Aug 2014 07:32:17 -0700
On Friday, August 22, 2014 at 6:38 AM,
wrote:
>
>
Hello,
>
>
If i use chef-client --local-mode (11.14.2) with my recipe, where i have
>
default hash attribute like a = {"default": "1"} and try use a role with
>
override_attributes section where a = {"no-default": "2"} i get result a =
>
{"default": "1", "no-default": "2"}.
>
>
I know that if a determine a default attribute in role it will be merge,
>
but i
>
think that if i write my attributes in "override_attributes" section that
>
will
>
be overriding. What i do wrong?
The Hashes are deep merged, which means any key in the override attributes
will win over the exact same key in default attributes, but a key that
appears in default attributes but not in override attributes will be
untouched. Deep merge is just a more sophisticated version of the built-in
`merge` method, so you can play with that in irb or pry to get a feel for how
it works:
[1] pry(main)> a = {"key1" => "value1", "key2" => "value2" }
=> {"key1"=>"value1", "key2"=>"value2"}
[2] pry(main)> b = { "key2" => "override value 2" }
=> {"key2"=>"override value 2"}
[3] pry(main)> merged = a.merge(b)
=> {"key1"=>"value1", "key2"=>"override value 2"}
--
Daniel DeLeo
Archive powered by MHonArc 2.6.16.