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

Chronological Thread 
  • From: Bryan Berry < >
  • To:
  • Subject: [chef] Re: Re: Re: Re: Announcing Berkshelf - Manage your Cookbooks like your gems
  • Date: Tue, 26 Jun 2012 12:12:22 +0200

very cool!

I am still quite a ruby n00b. What is the purpose of the thor integration?

On Tue, Jun 26, 2012 at 11:23 AM, Jamie Winsor < " target="_blank"> > 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 < " target="_blank"> > wrote:
DNS fail on my part.

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

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: " " target="_blank"> :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 artifact.

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.