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
New workflow tool: chefOne 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
chef gem: Easily install gems or knife-plugins into your Chef DK setup.
chef generate: Minimalistic cookbook generators powered by Chef.
Continuous DeliveryWe 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 PerformanceWe 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
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 BerkshelfThe 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:
appbundlerlocks 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 SupportAs 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
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
Awesome ChefsThanks 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).
- Berkshelf Team Jamie, Michael Ivey, SethV who has just released Berkshelf 3.0 w00t!!
- Fletcher for writing test-kitchen and his great feedback on Chef DK.
- Andrew for writing FoodCritic & Seth Vargo for ChefSpec.
- Mike, Jon, Pete, Noah, JohnK for their support and helpful discussions.
- Our own Awesome Release Engineering Team Yvonne, Seth & Seth who have been training Jenkins to behave.
- Nathan Smith for the beautiful download page