Chef Development Kit

Ohai Chefs,

The first version of Chef Development Kit (a.k.a. Chef DK) is here.

What is Chef DK?

Chef DK is a package that contains all the development tools you will need when coding Chef. It combines the best of the breed tools developed by Chef community with Chef Client.

Here is what you can do with Chef DK:

  • Get your cookbook dependencies under control and have a sane way of composing the cookbooks you need with the hot new Berkshelf 3.0
  • Take advantage of built-in testing with the de-facto lint tool for cookbooks FoodCritic, cookbook unit testing framework ChefSpec & the leading integration testing framework for coded infrastructure Test Kitchen
  • Easily setup and upgrade the Chef Client on your workstation
  • Get introduced to the brand new Chef workflow tool called chef
The community developed tools that you have known and have been using for a while are now housed in an official Chef product.

What’s new?

New workflow tool: chef

One of the strongest feats of Chef is its flexibility. It grew organically adapting to the many different workflows our users needed to run the technology stack behind their businesses. As a side effect of this organic growth, the new comers to Chef has faced with different ways of doing a thing with individual pros and cons. This decreased the approachability of Chef.

With Chef DK this paradigm is being broken. Chef DK includes a brand new tool called chef. The design goal of this tool is to “Streamline Chef Workflow for all”. Chef DK will offer new users a streamlined workflow, while maintaining the powerful flexibility for advanced Chef users.

We have a long way to get to this goal. But some of the things we can see when we get there may be:

  • Configurable generators that support the commonly used cookbook patterns
  • Deep integration between Berkshelf, Knife and Chef Client
  • Builtin development and test environment provisioning in the cloud
With version 0.0.1, we’re taking a small step in this direction with two small features:
  • chef gem: Easily install gems or knife-plugins into your Chef DK setup.
  • chef generate: Minimalistic cookbook generators powered by Chef.
PS: A couple words on the naming… We’ve always find it surprising that when you install Chef, you do not get any tools named “chef”. For a while we’ve considered calling one of the tools we have developed “chef” but never found the perfect match. Given that this tool is going to be the primary tool that our users will interact with in the future; if a tool is ever going to be called “chef” it would be this tool. Hence the name “chef” :)

Continuous Delivery

We are fans of Continuous Delivery. We believe it’s a significant competitive advantage. Also what’s the point of waiting for 2-3 months to deliver a bug fix or a new feature?

We have been working closely with our Awesome Release Engineering (ARE) team to build new continuous integration clusters which will be able to deliver well tested builds of Chef DK to you daily. This means you will be able to see your contributions in Chef DK the day after they’re merged.

More details to follow after ChefConf about this topic.

Built-in Performance

We are also fans of speed. Who wants to wait for a couple of minutes for their cookbook dependencies to get solved, or some 10 seconds after running knife -v?

When developing Chef DK, we’re taking performance as a primary consideration. Having a responsive tool at your workstations is the first step in having a delightful user experience. Here are couple of things in Chef DK that makes it more performant:

gecode in Berkshelf

The first major collaboration effort between Berkshelf Team and Chef has been on the dependency resolution. Berkshelf 3.0 ships with gecode as its dependency solver. You will hear a lot about this during and after ChefConf. But in a nutshell, this effort ensures that dependencies are resolved faster and in agreement with the Chef Server (which also uses gecode as dependency resolver).

How fast? Here are some numbers (in seconds) comparing gecode with pure ruby implementation while resolving Chef Inc. platform cookbook dependencies:

Screen Shot 2014-04-14 at 10.09.35 PM

appbundler

appbundler locks down an application’s dependencies to the versions selected by bundler using a Gemfile.lock. This way applications run faster because rubygems doesn’t resolve the dependency constraints at the runtime. This also protects the application from incompatible dependencies. All of the binaries included in Chef DK are using appbundler. You can read more about it here.

Platform Support

As being a workstation tool, Chef DK will be supported in all the common workstation platforms. The first version of Chef DK is built and tested on:
  • Mac OS X 10.9
  • Ubuntu 12.04
  • Ubuntu 13.10
  • RHEL 6
Yes we’re missing Windows. And yes it’s the next thing in our to-do list. Support for Windows 7 and windows 8.1 is on its way.

The Future?

The ambitious goal to “Streamline Chef Workflow for all” is really making us bite our nails. Thankfully we have a strong community that will help us get to this goal.

Our next big step towards this goal will be to prototype the streamlined Chef Workflow, discuss, work & iterate on it with you. We will have public online discussions in the near future. But this week, all of us are in San Francisco @ ChefConf2014. Feel free to grab anyone with a Staff T-shirt and say “I want to talk about this streamlined Chef Workflow” and let’s talk.

Finally, as usual Chef DK is Open Source. Feel free to open a Github issue or send a PR. Yes not a typo, I meant to say Github issue. We’re working on our contribution and issue tracking processes to make it easier to contribute and send us feedback. Stay tuned for more updates on this but feel free to use Github issues on chef-dk project.

Awesome Chefs

Thanks for hanging on and getting to the end of this long post. A lot of good work went into Chef DK. Even though it’s not possible to list all the names here, here is a courageous attempt to do so (Apologies in advance for any name that’s forgotten). Grab Chef DK here and as usual feel free to reach out if you have any questions or seeing any issues.

– Chef Client Team: Dan DeLeo, Lamont Granquist, Claire McQuin & Serdar Sutay

  • Victor Lowther

    Please, not gecode. My servers and dev env do want to pull in qt4 and its dependencies. Take a look at https://github.com/openSUSE/libsolv instead.

    • kallistec

      You don’t need qt. We build gecode with all the extraneous stuff stripped out. See https://github.com/opscode/dep-selector-libgecode

    • kallistec

      Also, the chefdk omnibus packages include gecode already compiled so you don’t have to install anything separately.

  • Chris Fordham

    Where is the source code? Did I miss the links for that?

  • http://ringo.de-smet.name/ Ringo De Smet

    The introduction of gecode in Berkshelf results in an installation failure on Windows because I need a whole development toolchain to build the native extensions! Come on, you gotta be kidding, right?

    • Adam Jacob

      Like out other projects, we are distributing Chef DK as an omnibus package, on all the supported platforms, including Windows. You’ll never need to build gecode if you don’t want to – just enjoy the blissful speed increase.

      • http://ringo.de-smet.name/ Ringo De Smet

        Adam, what about the vagrant-berkshelf plugin, that installs the berkshelf gem? Will this also use the precompiled gecode from the Omnibus package?

        See my request here: https://github.com/berkshelf/solve/issues/31

        • kallistec

          For now you need to use devkit, which you can get here: http://rubyinstaller.org/downloads/

          Eventually the vagrant-berkshelf plugin will be modified to not install all of berks into vagrant.

  • Oliver Ponder

    Hey guys, just wanna say I really appreciate the effort that is going into this and in keeping the community informed! Thanks!

  • Joe Rocklin

    As much as I don’t want to care about the windows setup, I have to use it. Is there an ETA on the availability date for windows?

    • http://jtimberman.housepub.org/ Joshua Timberman

      We’re working on it! We’ll have a new blog post when a Windows build is ready.

  • Chris Fordham

    What is the right path to get this on Arch Linux?

  • Torben Knerr

    Sweet! An official Development Kit for Chef finally!

    Windows users: in the meantime you check out Bill’s Kitchen. Its a slightly different approach but still all you need for working with Chef on Windows. YMMV: https://github.com/tknerr/bills-kitchen

  • http://www.drazzib.com/ Damien Raude-Morvan

    Hi, It would be great to also support Debian Wheezy as developpement platform (it’s not that complicated to provide a Debian compiled package if you provide Ubuntu :)

Archives