[chef] Re: Re: Wrapper Cookbook Attribute Overwrite Question


Chronological Thread 
  • From: "David A. Williams" < >
  • To: " " < >
  • Subject: [chef] Re: Re: Wrapper Cookbook Attribute Overwrite Question
  • Date: Fri, 13 Jun 2014 07:46:50 -0500
  • Accept-language: en-US
  • Acceptlanguage: en-US

Xabier and Rajiv,

Thank you for your responses!  Xabier I went with your approach and it
worked.  Rajiv, I use environments for cookbook versions.

David Williams


On 6/12/14 6:39 PM, "Xabier de Zuazo" 
< >
 wrote:

>On Thu, 12 Jun 2014 11:15:02 -0500
>"David A. Williams" 
>< >
> wrote:
>
>> I'm setting up a wrapper cookbook to overwrite some node attributes.
>> However it appears when that attribute is a hash it runs both
>> configs.  Has anyone experienced this?
>>
>> For example in my base cookbook, I have
>> attributes/default.rb
>> default['operations']['tomcat_instances']  = {:Dev  => { :port =>
>> '80', :sites => %w[Dev] }}
>>
>> And in my wrapper cookbook, I have
>> recipes/raven_server.rb
>> node.set['operations']['tomcat_instances'] = {:QA=> { :port =>
>> '80', :sites => %w[Master Staging] }}
>>
>> After the chef run.  I have two Tomcat instances set up instead of
>> just one.
>
> That's because you are setting different attribute types (default vs.
> normal,set). In this case the Hashes are merged instead of replaced.
>
> You should use same attribute type like for example:
>
>node.default['operations']['tomcat_instances']  = {
>  :Dev  => { :port => '80', :sites => %w[Dev] }
>}
># ...
>node.default['operations']['tomcat_instances'] = {
>  :QA=> { :port => '80', :sites => %w[Master Staging] }
>}
>
> Or reset default attribute type:
>
>node.default['operations']['tomcat_instances']  = {
>  :Dev  => { :port => '80', :sites => %w[Dev] }
>}
># ...
>node.default['operations']['tomcat_instances'] = {}
>node.set['operations']['tomcat_instances'] = {
> :QA=> { :port => '80', :sites => %w[Master Staging] }
>}
>
>
> I know this can be confusing, but keep in mind that the attributes are
> of type Hash internally (Mash). These two things have the same effect:
>
>node.set['operations']['tomcat_instances'] = {
> :QA=> { :port => '80', :sites => %w[Master Staging] }
>}
>
>node.set['operations']['tomcat_instances']['QA']['port'] = '80'
>node.set['operations']['tomcat_instances']['QA']['sites'] = %w[
>  Master
>  Staging
>]
>
>--
>Xabier de Zuazo Oteiza
>IT System Administrator - Onddo Labs S.L.
>www.onddo.com
>--------------------------------------------------------------------
>Public Key = http://www.onddo.com/xabier_zuazo.pub
>Key Fingerprint = 8EFA 5B17 7275 5F1F 42B2  26B4 8E18 8B67 9DE1 9468
>--------------------------------------------------------------------


CONFIDENTIALITY NOTICE:  This electronic mail may contain information that is 
privileged, confidential, and/or otherwise protected from disclosure to 
anyone other than its intended recipient(s).  Any dissemination or use of 
this electronic mail or its contents by persons other than the intended 
recipient(s) is strictly prohibited.  If you have received this communication 
in error, please notify the sender immediately by reply e-mail so that we may 
correct our internal records.  Please then delete the original message.  
Thank you.



Archive powered by MHonArc 2.6.16.

§