[chef] Re: Re: Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0


Chronological Thread 
  • From: Michael Glenney < >
  • To:
  • Subject: [chef] Re: Re: Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0
  • Date: Tue, 4 Sep 2012 16:02:44 -0700

Hmm.  You're running 10.12.0?  I just tested again.  Started with the following:

Node data (with 'knife node show <nodename> -Fj'):

    "haproxy": {
      "config": "classroom.cfg.erb",
      "nodes": {
        "portal_api": [
          "2.2.2.2",
          "3.3.3.3"
        ]
      }

haproxy config:

  server portal_api-2.2.2.2 2.2.2.2:443 check port 443 inter 10s rise 4 fall 4
  server portal_api-3.3.3.3 3.3.3.3:443 check port 443 inter 10s rise 4 fall 4

I ran 'chef-client -j /etc/chef/routing_rules.json' with the following in "routing_rules.json":

{ "haproxy": { "nodes": { "portal_api": [ "!merge:", "10.10.10.10", "11.11.11.11" ] } } }


This is what I ended up with:

Node data:

    "haproxy": {
      "config": "classroom.cfg.erb",
      "nodes": {
        "portal_api": [
          "2.2.2.2",
          "3.3.3.3",
          "!merge:",
          "10.10.10.10",
          "11.11.11.11"
        ]
      }

haproxy config:

  server portal_api-2.2.2.2 2.2.2.2:443 check port 443 inter 10s rise 4 fall 4
  server portal_api-3.3.3.3 3.3.3.3:443 check port 443 inter 10s rise 4 fall 4
  server portal_api-!merge: !merge::443 check port 443 inter 10s rise 4 fall 4
  server portal_api-10.10.10.10 10.10.10.10:443 check port 443 inter 10s rise 4 fall 4
  server portal_api-11.11.11.11 11.11.11.11:443 check port 443 inter 10s rise 4 fall 4

The docs say you can run without the colon now but I'm not seeing a difference.  Doesn't work either way.

MG

On Tue, Sep 4, 2012 at 3:41 PM, Juanje Ojeda Croissier < " target="_blank"> > wrote:
I believe the issue here is the " (without the colon) ". I had some
troubles here as well, but it's now working with the colon
("!merge:").

Could you test it with colon, please?

On Tue, Sep 4, 2012 at 8:27 PM, Michael Glenney < "> > wrote:
> I have now verified that putting !merge does not work in 10.12.0  I'll go
> back an read over the link AJ sent again but it appears as if deep merge is
> gone or broken.
>
> Here's the json I passed to the chef-client run:
>
> { "haproxy": { "nodes": { "portal_api": [ "!merge", "4.4.4.4", "5.5.5.5" ] }
> } }
>
> Here's the resulting haproxy config:
>
>   server portal_api-!merge !merge:443 check port 443 inter 10s rise 4 fall 4
>   server portal_api-4.4.4.4 4.4.4.4:443 check port 443 inter 10s rise 4 fall
> 4
>   server portal_api-5.5.5.5 5.5.5.5:443 check port 443 inter 10s rise 4 fall
> 4
>
> Not what I was going for obviously.
>
> MG
>
>
> On Sun, Sep 2, 2012 at 6:46 PM, Michael Glenney < "> >
> wrote:
>>
>> Yeah.  Looking at your link it looks like using "!merge" (without the
>> colon) will probably work.  just need to test it.  That goes along with what
>> it says in the wiki except for the fact that the wiki says it "can" be used
>> instead of saying it must.
>>
>> MG
>>
>> On Sun, Sep 2, 2012 at 3:11 PM, AJ Christensen < "> > wrote:
>>>
>>> From DeepMerge mixin class:
>>>
>>> # Inherited roles use the knockout_prefix array subtraction functionality
>>> # This is likely to go away in Chef >= 0.11
>>>       def role_merge(first, second)
>>>         first  = Mash.new(first)  unless first.kind_of?(Mash)
>>>         second = Mash.new(second) unless second.kind_of?(Mash)
>>>
>>>         DeepMerge.deep_merge(second, first, {:knockout_prefix =>
>>> "!merge", :preserve_unmergeables => false})
>>>       end
>>>
>>>
>>> https://github.com/opscode/chef/blob/master/chef/lib/chef/mixin/deep_merge.rb#L44
>>>
>>> Maybe there's something useful for you here.
>>>
>>> I've only once used the attribute knockout functionality -- what is
>>> your use case? There may be another simple solution.
>>>
>>> --AJ
>>>
>>> On 3 September 2012 09:08, Michael Glenney < "> >
>>> wrote:
>>> > Weird. For some reason it's not sending me my own. Oh well.  Have there
>>> > been any responses to my question?  Because I dont see any of those either
>>> >
>>> > Michael Glenney
>>> > Sent from my iPhone
>>> >
>>> > On Sep 2, 2012, at 11:43 AM, Adam Jacob < "> > wrote:
>>> >
>>> >> Nope - I saw it two days ago.
>>> >>
>>> >> Adam
>>> >>
>>> >> On Sun, Sep 2, 2012 at 10:04 AM, Michael Glenney
>>> >> < "> > wrote:
>>> >>> I sent this on friday. Still hasn't made it to my inbox. Am I getting
>>> >>> moderated?
>>> >>>
>>> >>> Michael Glenney
>>> >>> Sent from my iPhone
>>> >>>
>>> >>> On Aug 31, 2012, at 4:08 PM, Michael Glenney < "> >
>>> >>> wrote:
>>> >>>
>>> >>> I had a problem with deep merge not working properly in 10.12.0.
>>> >>> Tested in
>>> >>> 0.10.10 and it didn't work there either.  Instead of replacing my
>>> >>> array it
>>> >>> was actually putting "!merge:" into my array.
>>> >>>
>>> >>> After I reverted to 0.10.4 to get my deployment completed I stumbled
>>> >>> on this
>>> >>> line from http://wiki.opscode.com/display/chef/Deep+Merge:
>>> >>>
>>> >>> "!merge (without the colon) can be used in Chef >= 0.10.10"
>>> >>>
>>> >>> I haven't had a chance to go back and test.  Will have to wait until
>>> >>> Monday.
>>> >>> But should that line read:
>>> >>>
>>> >>> "!merge (without the colon) MUST be used in Chef >= 0.10.10"
>>> >>>
>>> >>> Thanks,
>>> >>>
>>> >>> MG
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Opscode, Inc.
>>> >> Adam Jacob, Chief Customer Officer
>>> >> T: (206) 619-7151 E: ">
>>
>>
>



--
Juanje

http://about.me/juanje




Archive powered by MHonArc 2.6.16.

§