- From: Torben Knerr <
>
- To: "
" <
>
- Subject: [chef] Re: Re: Single Repo vs Repo per cookbook
- Date: Mon, 13 Apr 2015 22:25:04 +0200
Have not used the Berkshelf rel: option personally, but one thing that
gets messy is that you are mixing up tags when version-tagging your
cookbooks.
In Git tags are global per repo, i.e. you can't tag on a subdirectory
level as you can in svn. So this would result in having tags like:
"company-apache2-v1.0", "company-php-v0.9", etc... if you want to
version them individually.
It's probably not a Chef specific issue at all but like a general Git
repo structure problem. My rule of thumb is "one Git repo per
versioned entity", so:
=> if all your org cookbooks have a common release cycle and are
version together -> use a single repo
=> if your org cookbooks have different release cycles and are
versioned independently -> use one repo per cookbook
Not even sure whether Berkshelf would handle that gracefully if you
have 2 cookbook dependencies using rel: that are in the same repo but
checked out at different commits / tags...
Cheers, Torben
On Mon, Apr 13, 2015 at 10:17 PM, William Jimenez
<
>
wrote:
>
I've been talking to a lot of people in the community about this as well,
>
and the short of it has been, while there is an overall trend towards a
>
single repo per cookbook (and value in that model), either approach has
>
tradeoffs. And there is something to be said for a hybrid approach that
>
embraces both ideals, and this can be a good stepping stone towards an
>
optimal solution.
>
>
I realize you're looking for a more specific answer, but just wanted to
>
share that general observation.
>
>
-William
>
>
On Mon, Apr 13, 2015 at 11:49 AM, Yoshi Spendiff
>
<
>
>
wrote:
>
>
>
> Hi,
>
>
>
> I know this horse has been flogged to death but I've a slightly different
>
> permutation on the question that I'm having trouble working out.
>
>
>
> I'm fully on board with having cookbooks be isolated objects with their
>
> own dependencies, using Berkshelf and testing cookbooks in isolation, but
>
> I'm in a situation here where we're putting in a new Chef implmenetation
>
> and
>
> I need to convince people here to use one repo per cookbook with examples
>
> of
>
> why, otherwise it will be done in one repo. It's easy to show arguments for
>
> why cookbooks should be essentially independent and developed/tested as
>
> such
>
> but I'm not sure that necessarily means they have to be in their own
>
> repository each.
>
>
>
> The other way around this that I can see is to simply use directories
>
> under the cookbooks repo to do the same thing (not a chef repo, more just
>
> like a cookbook specific repo). So you would have a structure like this:
>
> -cookbooks_repo
>
> --company-apache2 (wrapper cookbook)
>
> ---Berksfile
>
> --company-php (wrapper cookbook)
>
> ---Berksfile
>
> --company-cookbook (role containing cookbook)
>
> ---Berksfiles
>
> ---recipes\webserver.rb
>
> ---metadata.rb (pointing to company-apache2 and company-php)
>
>
>
> The Berksfiles for the downstream cookbooks could reference the others by
>
> git ref using rel: option for a directory, which is how the separation is
>
> achieved. Each cookbook would also have it's own Vagrantfile for testing
>
> and
>
> metadata dependencies listed.
>
>
>
> I guess the problem I'm having is I don't really see any major
>
> disadvantage of this myself, so can anyone help inform me why I should use
>
> one cookbook per repo instead of managing them in directories like this
>
> (but
>
> still treating them as essentially separate objects otherwise). All I could
>
> think of was it means people might work on two cookbooks in a single
>
> branch/commit, but I'm not sure that's necessarily a bad thing.
>
>
>
> I should also add that these are all internal cookbooks that are company
>
> specific, they would never be shared in the community.
>
>
>
>
>
> --
>
> Yoshi Spendiff
>
> DevOps Engineer
>
> Indochino
>
> Mobile: +1 778 952 2025
>
> Email:
>
>
>
>
Archive powered by MHonArc 2.6.16.