[chef] Re: Re: Where do YOU put your environment and role files?


Chronological Thread 
  • From: Michael Lindsay < >
  • To:
  • Subject: [chef] Re: Re: Where do YOU put your environment and role files?
  • Date: Mon, 9 Mar 2015 12:31:35 -0700

Over here, we are deploying micro services to environments. Our layout is that chef_repo is a sibling to all of our application cookbooks ( and cookbooks dir in chef_repo is empty )  This allows us to have both shared and application specific attributes in the environment file and deploy apps configured correctly for each of our services.

On Mon, Mar 9, 2015 at 12:18 PM, Xabier de Zuazo < " target="_blank"> > wrote:
On 2015-03-09 14:21, Fabien Delpierre wrote:
> [...]
> I could just gut the old Chef repo, removing all the cookbooks and leaving
> only the environments, roles and data bags, then point my Vagrantfiles to
> the same paths for those types of resources every time, but most of the
> time, the environments or roles make no sense except when considered in the
> context of a given cookbook.
>
> It would make sense (to me at least) to keep them with the cookbook they're
> meant to be used with, and to put them in the same git repo as the
> cookbook, but then when I use Berkshelf to create a cookbook, it creates
> the standard directory structure and it feels weird to me to add a
> ./environments and a ./roles under my cookbook's directory structure,
> alongside the ./attributes, ./recipes and so forth.
>
> So does it make more sense to keep the environments and roles in the same
> git repo as a cookbook, or continue to keep all environments and roles in a
> central repo, like so:
>
> chef-repo
>  |_ cookbooks
>      |_ cookbook1
>          |_ individual git repo
>          |_ Vagrantfile pointed at ../../ for environments and roles
>      |_ cookbook2
>          |_ individual git repo
>          |_ Vagrantfile pointed at ../../ for environments and roles
>      |_ etc.
>  |_ environments
>      |_ all environments ever written
>  |_ roles
>      |_ all roles ever written
>  |_ .gitignore to ignore contents of ./cookbooks
>
> What about data bags? Keep them directly under the repo, or with individual
> cookbooks? Or both, depending on what makes the most sense?

In our case, we are using a provisioning cookbook that uses the
chef-provisioning gem and we put the environments and the data bags inside this
cookbook recipes. Something like this:

myapp_provisioning::environments
myapp_provisioning::data_bags
myapp_provisioning::roles
...

You could put them in the same cookbook, in a recipe called something like
`myapp::provisioning`. But that could be confusing, because those recipes are
used differently.

The downside is you can not include them with vagrant so easily :-(

https://docs.chef.io/provisioning.html#chef-environment

--
Xabier de Zuazo




Archive powered by MHonArc 2.6.16.

§