Berkshelf 1.0.0 released


#1

Hey Chefs,

I am pleased to announce the very first milestone release of Berkshelf (1.0.0). The It Works On Windows release.

A bit about Berkshelf
Berkshelf is a dependency resolver for your cookbooks. It allows you to treat your cookbooks like you treat your gems. Berkshelf encourages and allows you to develop your cookbooks in isolation with tight integration into Vagrant by a Vagrant plugin. The Berkshelf Vagrant plugin recursively resolves your cookbook dependencies and provides them, and your cookbook, to a virtual machine on your laptop or desktop.

Using Berkshelf with Vagrant you will reduce the time between iterations and increase the quality of your cookbooks by developing in isolation. This is a pre-requisite towards automated testing and continuous integration for cookbooks. With Berkshelf we can, as a community, increase the quality of our community cookbooks as our supported platform base and sheer number of cookbooks grow.

What’s new in this release?
Easier installation by dropping Gecode requirement
Thanks to the co-efforts of Andrew Garson (https://github.com/andrewGarson) a pure Ruby dependency resolver (Solve (https://github.com/reset/solve)) was created to replace the requirement on Gecode. No longer do you need to install Gecode from source or find a pre-built package for your OS.

Windows support by dropping Gecode requirement
Dropping Gecode also meant that we could begin working on our Windows support. I am pleased to announce that Berkshelf has been working well for our Windows developers here at Riot Games and thanks to some awesome individuals in the community we were able to smash some of our Windows filesystem bugs.

Vagrant plugin for a seamless iteration process
While we encouraged the use of Vagrant in the previous releases of Berkshelf - there were still some pain points. The biggest change here is that the --shims flag has been removed and replaced by --path. The --path flag is now used for vendoring your cookbooks to a specific directory (useful if you want to distribute these for use with Chef Solo, for example) but not required at all to get your cookbooks into Vagrant. By adding ‘require “berkshelf/vagrant”’ at the top of your Vagrantfile the Berksfile in your current working directory will resolved, installed, and all cookbooks will be given to the Vagrant chef_solo provisioner. If you prefer the chef_client provisioner these cookbooks will instead be uploaded to your configured Chef Server.

Berkshelf has it’s own configuration file
In previous releases the -c (--config) flag would take a Knife configuration as it’s argument and the Chef server configuration information found there would be used for uploading or installing in and out of a Chef Server. This argument to this flag has changed in the recent release:
The -c (--config) flag now takes a Berkshelf configuration file in the form of a plain text json file
A Berkshelf configuration file can be generated with the berks configure command
If you do not create a Berkshelf configuration file then your Knife config will be used to best try and create an acceptable default configuration file in-process for you
The Berks configuration provides you with additional configuration options that came from the addition of the berks cookbook command and the Vagrant plugin

In a future release you will be able to specify multiple Chef Servers and their credentials to mitigate the need to have multiple Berks configuration files and also to make the process of uploading your cookbooks to multiple chef servers more seamless.

Github source location
It is not possible to specify a shorthand Git source location for Github:
cookbook “artifact”, github: “RiotGames/artifact-cookbook”

Faster downloads and uploads of cookbooks
Lots of bug fixes

Check out http://berkshelf.com for more detailed information and my unfinished guide on authoring a cookbook (http://vialstudios.com/guide-authoring-cookbooks.html) for a deeper example of “The Riot Way” of developing cookbooks.

And a big thank you to all of our contributors (https://github.com/RiotGames/berkshelf/graphs/contributors) and testers!


Jamie Winsor
@resetexistence