[chef] Re: Re: Re: Re: Environment Inheritence


Chronological Thread 
  • From: Galen Emery < >
  • To:
  • Subject: [chef] Re: Re: Re: Re: Environment Inheritence
  • Date: Thu, 18 Jun 2015 13:56:04 -0700

Doug,

the levels you suggested are the ones we typically recommend.

The way I teach people is the following:
Cookbook attributes file: use default.
Roles: Use Default
Environments: Use Override.

There's a bunch of other precedence levels and while helpful for debug, can drive you nuts if you're using in production.


On Thu, Jun 18, 2015 at 1:53 PM, Yoshi Spendiff < " target="_blank"> > wrote:
Everything gets merged together. Your attribute set at the end is the result of all levels and locations being merged together and the highest precedence winning.

On Thu, Jun 18, 2015 at 1:49 PM, Douglas Garstang < " target="_blank"> > wrote:
Sounds .... complicated.

I don't think I have a complex enough environment to justify that yet. Looking at the attributes precedence docs, it looks like I could set common attributes as default attributes in a role (#4) and then override with a override attribute in an environment (#12). In this situation though, would the two hashes me merged together?

Doug.

On Thu, Jun 18, 2015 at 1:35 PM, Ranjib Dey < " target="_blank"> > wrote:
oh btw.. i dont use chef's attribute precedence heavily .. most of the attribute customization are spread across standard default precedence level, (recipe, wrappers, environments, roles ), the deep_merge yaml trick. this allows me to bypass most of the so called role-env, role-recipe etc etc patterns, and eases deduction. I still use the higher precedence levels sporadically (like canary releases, CVE patches etc), more like for surgical cases

On Thu, Jun 18, 2015 at 1:30 PM, Ranjib Dey < " target="_blank"> > wrote:
i use environment heavily as well, and face the same problem. The trick i use is have a environments/common folder which container coomon things in yaml file (or ruby if you like) that is just data. Top level environments (say environments/foo.rb) can directly read that yaml, and deep_merge! (one of dans many awesome works :-) ) that directly in default_attributes method. this allows me to keep the common data and reuse it.,

hope that helps.

On Thu, Jun 18, 2015 at 10:48 AM, Douglas Garstang < " target="_blank"> > wrote:
All,

I'm making pretty heavy use of environments. There's quite a fair bit of duplication and I'd like to implement a 'base' environment, with common attributes that apply to all environments. How would I do this?

What happens if the same attribute is defined in multiple environments? Are they merged together or does the 'inherited' one override the 'base' one?

Thanks,
Doug







--



--



--
Galen Emery 



Archive powered by MHonArc 2.6.16.

§