[chef] Re: Re: Re: Re: Re: Announcing Berkshelf - Manage your Cookbooks like your gems

Chronological Thread 
  • From: Jamie Winsor < >
  • To:
  • Subject: [chef] Re: Re: Re: Re: Re: Announcing Berkshelf - Manage your Cookbooks like your gems
  • Date: Tue, 26 Jun 2012 02:54:46 -0700

The pure Ruby constraint solver will be shipped as a separate Gem and included into Berkshelf as a dependency.

Provided it's fast enough, we could for sure swap the Chef gecode dependency for it.

Jamie Winsor

On Tuesday, June 26, 2012 at 2:45 AM, AJ Christensen wrote:

The pure ruby constraint solver could be beneficial toward Chef
itself, I'm sure there is no other reason to be tied to libgecode --
it has to be packaged by Opscode for Ubuntu, even.. although the
omnibus packages make most of those problems minimal


On 26 June 2012 21:23, Jamie Winsor < "> > wrote:
You pretty much hit the key difference there - centralized storage.

We set out to create a tool which would allow us to develop our cookbooks
rapidly and make them first class citizens on a build server. The first task
was pretty easy since @mitchellh (Vagrant) did all of that work for us.

The second goal was a bit tougher; we had to integrate with a build process
for two different types of jobs.

One job is a cookbook job and the other is an application. In the case of a
cookbook build job your CI server listens for changes in version control and
then goes to work. We added the 'metadata' keyword which allows Berkshelf to
resolve the current working project's dependencies much like Bundler's
'gemspec' function.

The other job is an application who has an 'application cookbook'. In this
case every application contains a Berksfile which contains only one source
entry pointing to the application's cookbook.

We have some additional things coming which will make Berkshelf more of a
Bundler / RubyGems hybrid, but until then this is the basis of what we
needed to accomplish to unblock our continuous delivery pipeline.

We'll be improving portability and adding Windows support in the next
release by dropping Gecode. You can expect some big fixes along the way and
additional features to follow after we finish up a pure Ruby constraint
solver in 0.4.0.

Jamie Winsor

On Tuesday, June 26, 2012 at 2:08 AM, Bryan Berry wrote:

Hey Jamie,

Awesome work!

How does berkshelf compare to librarian-chef?

afaict, it uses a different mechanism to store and link to them, this gets
around the issue of when you want to edit a cookbook managed by librarian,
you can't really do that w/out using :path and then `librarian-chef install
&& librarian-chef update`  You've also got groups which looks like a very
neat feature

What else is different?

On Mon, Jun 25, 2012 at 11:42 PM, Jamie Winsor < "> >

DNS fail on my part.

You'll want to hit http://berkshelf.com until the CNAME for www is working

Sorry for the confusion!

Jamie Winsor

On Monday, June 25, 2012 at 12:39 PM, Jamie Winsor wrote:


We (Riot Games) have been hard at work these last few months setting up a
continuous delivery process for not only our software, but also for the
cookbooks that configure our software. Today we open sourced the first of a
line of tools which we will be rolling out to the community.

Berkshelf is a way to manage a cookbook or an application's cookbook
dependencies. It allows you to treat cookbooks like you treat gems. At Riot
we are using Berkshelf on every internal application. A Berksfile is
included in each application with a strict version lock to ensure we only
deploy our build artifacts with the proper accompanying cookbook version.
Given an application "league" it is accompanied by a Berksfile containing
the line:

cookbook "league", git: " "> :riot/league.git", branch:
"~> 1.61.0"

This ensures that during each build we always deploy the latest and greatest
patches of the cookbook we deem appropriate for deploying the built

Berkshelf is also good for setting up a continuous delivery process for your
Cookbooks themselves, too. At Riot every cookbook is stored in it's own Git
repository which contains a Berksfile containing the line:


This marks the current working directory as being a cookbook itself for
Berkshelf to take actions upon. These jobs will unit test, lint test,
validate syntax, and then upload the cookbook to our Chef Server for
consumption by other applications.

We hope that you find Berkshelf as useful as we do.

Pull requests welcome!

Jamie Winsor

Archive powered by MHonArc 2.6.16.