- From: Noah Kantrowitz <
>
- To:
- Subject: [chef] Re: Re: Re: Re: Array attributes merge
- Date: Mon, 21 Oct 2013 23:32:01 -0700
https://coderanger.net/2013/06/arrays-and-chef/ goes over this in great
detail :)
--Noah
On Oct 21, 2013, at 11:27 PM, "aL."
<
>
wrote:
>
Even += works in order to append values he he.
>
>
May be that recipes attr definitions just override attr files ones.
>
>
Mike: I have checked out that arrays merge works well on defaults attr
>
files + defaults on role. So environment and roles examples on the link,
>
are just examples, i think.
>
>
Can a opscode dev, explain what is the exactly behaviour with arrays on
>
attributes? Looks like it depends where you define the attr override works
>
as expected o_O
>
>
El 21/10/2013 16:22, "Luke Bradbury"
>
<
>
>
escribió:
>
My experience with this issue was similar, however I found that << doesn't
>
play nice with the autovivification.
>
Consequently I've been using this pattern as a workaround:
>
>
>
>
>
node.default['foo'] = node['foo'].to_a.push('bar')
>
>
Regards,
>
Luke
>
>
>
On 21 October 2013 16:04, Michael Glenney
>
<
>
>
wrote:
>
I don't have a complete answer but I know that:
>
>
1) The doc you linked to specifically calls out roles and environments.
>
Might be a clue
>
2) When writing a provider for a cookbook attributes are mutable. So maybe
>
this will work for you within a recipe:
>
>
node.default['foo'] << 'bar'
>
>
Sent from my iPhone
>
>
On Oct 21, 2013, at 5:22 AM, "aL."
>
<
>
>
wrote:
>
>
> Hi guys!
>
>
>
> According to this:
>
> http://docs.opscode.com/essentials_node_object_deep_merge.html#addition
>
>
>
> Array attributes are merged, i have checked out that this is the behaviour
>
> when using default attributes on attribute files and roles.
>
>
>
> But when i try to define a default attribute on one recipe:
>
>
>
> node.default['foo'] = ['bar']
>
>
>
> The one that i have already on defaults.rb attribute file:
>
>
>
> node.default['foo'] = ['littlebar']
>
>
>
> Is overrided by the one i defined on the recipe, resulting node['foo'] =
>
> ['bar']
>
>
>
> Defining on a role:
>
>
>
> default_attributes (:foo => ['bar'])
>
>
>
> Works as expected, and results on node['foo'] = ['littlebar','bar']
>
>
>
> So what exactly node.default['x'] = value do on recipes? Looks like a
>
> direct override... O_o
>
>
>
> --
>
> Si necesitas una máquina para hacer algo y no la compras al final te darás
>
> cuenta de que has pagado lo mismo y no tienes la máquina.--Henry Ford
>
> Alberto
>
Attachment:
signature.asc
Description: Message signed with OpenPGP using GPGMail
Archive powered by MHonArc 2.6.16.