Chef 0.6.0 Release

Hello! How are my favorite cooks? Its been a while since our last release (around twice as long as we prefer, actually,) but we make up for our tardiness with a whole heap of fabulous for you.

We begin, as always, with the MVP award. It was a tight race: Chef 0.5.4 MVP Arjuna Christensen rebuilt the Chef Server Web UI using pilu’s web-app-theme, making it orders of magnitude more pleasing (in addition to resolving four other tickets). He also added support for CouchDB 0.9, and fixed a bug in Cookbook names with dots in them.

Matthew Kent

Matthew Kent, though, stepped up and packaged Chef (and all of its dependencies) for CentOS/Red Hat as RPMs, complete with initialization scripts – while still finding time to patch up the yum package provider (giving a serious speedup for Red Hat users.)

While the joy brought to us by the new Web UI is strong, in the end we decided we had to hand the Chef 0.6.0 MVP award to Matthew. As a bunch of Systems Administrators ourselves, we know just how hard it can be to do this sort of thing. Thank you so much for all your hard work – you truly made a huge difference in the lives of everyone who wants to use Chef on Enterprise Linux.

For those of you worried about Arjuna’s feelings, fear not – his consolation prize is a job at Opscode! Stoked to have you with us full time, Arjuna.

What was the rest of our lovely community up to, you ask?

  • Matthew Landauer kept up his history of making FreeBSD support in Chef a first-class experience with a trio of patches to the Ports provider.
  • Joe Williams added a Status Page to the web UI, along with a patch allowing only specific OpenIDs to auth against the server.
  • Dan Walters provided a compatibility fix for those of you using Ruby 1.8.5 (a better Dir.glob, if you want to know the details. ;)
  • Michael Lim fixed up deleting entries in custom search indexes.
  • Miguel Cabeça fixed an erroneous exception when we tried to delete files that already did not exist. He also provided a ton of great feedback about Chef’s internals, filed several tickets, and commented on what our future directions should be. Thanks for the patch, and the outstanding feedback, Miguel – we’re grateful.
  • Thom May added Tags as a top-level UI element for Nodes. (You’ll like this when we get Roles implemented)
  • Caleb Tennis did me a real favor: he fixed several of my recurring typos. He also improved the Gentoo service provider (on Gentoo, everything always has a status command), and has enabled manual checksum hints on remote files.
  • Joshua Sierles patched the Apt provider so that it functions on systems whose default language is not English. Thanks for making Chef work for people outside of the former English Colonies, Joshua. :)
  • Mark Imbriaco knocked out a super fix: we now checksum all the files in your cookbooks in advance, saving potentially hundreds of HTTP round-trips. Look for big speedups on systems once the initial set of cookbooks is cached.

While Opscode could have rested on our laurels, we instead did some hacking of our own:

  • Chris Brown moved the Chef Server into a Merb Slice, making it easy to embed it in your own Merb applications. He also fixed up a series of irritating bugs around how we treat numbers (negative UID/GIDs, octal modes for file permissions,) and fixed up the namespace for our internal Exceptions.
  • I only snuck in two patches this time around – one fixing an issue with delayed notifications for the same resource firing more than once, and putting the final nail in the coffin of how we handle reading the stdout/stderr of spawned processes.
  • Benjamin Black enabled CouchDB as an optional backing store for OpenID, making life easier for people running load balanced Chef servers.
  • New hire Nuo Yan (fresh out of college, no less!) added a class to simplify editing files within Chef Providers, enabled the setting of a umask for execute resources, and stopped us from creating backup files (then deleting them immediately) when we didn’t need to. Check out how awesome his comments are when he closes bugs, compared to mine – the gold standard, straight from the new guy.
  • Chris Walters, another of our new engineers, had time to slip in a pair of fixes to Chef’s file handling (deleting resources that point to symlinks, always managing file permissions.) He also patched the chef-server to send an appropriate error code when a client requests a missing template or remote file. We’re lucky to have snagged an engineer of his caliber to work with us – glad to have you on the team, Chris.

As always, you can find instructions for installing the new release on the wiki.

No release would be complete without a shout out to the burgeoning Chef community – we get more people working on the project, both with code and ideas every day. We could never build a tool good enough to automate the worlds infrastructure without each and every one of you helping us – we’re humbled.

Now, enough about our spiffy tool and waxing on about how we love you – go cook up some awesome infrastructure!

The full change log follows, below the fold…

Release Notes – Chef – Version 0.6.0

Bug

  • [CHEF-134] – User IDs and GIDs with negative numbers cause a type exception
  • [CHEF-162] – delayed notifications should coalesce so they don’t run multiple times
  • [CHEF-163] – remote_file not working on head, 404 due to missing route
  • [CHEF-164] – Slice routing changes break remote file provider
  • [CHEF-169] – Detect and use new view URL’s for CouchDB 0.9.0 compatability
  • [CHEF-171] – Package name with a dash (-) in it is not recognised
  • [CHEF-173] – With debug logging level set long running commands do not show their output in real time
  • [CHEF-174] – directory mode not set correctly
  • [CHEF-182] – Chef::Exception masks ::Exception (see OHAI-79)
  • [CHEF-185] – file delete backs up links
  • [CHEF-186] – file delete fails if file does not exist
  • [CHEF-188] – Merb dependencies for both the server app and slice need to be updated to 1.0.10
  • [CHEF-190] – apt provider fails on non-English debian installations
  • [CHEF-195] – The backup attribute for File needlessly creates a backup then deletes it when set to 0
  • [CHEF-198] – chef-solo banner
  • [CHEF-206] – chef-server-slice rake install fails
  • [CHEF-207] – chef-server and chef-server-slice should require merb > 1.0, not specific versions
  • [CHEF-218] – Search indexes are broken due to missing route
  • [CHEF-222] – CouchDB 0.9 compat causes the client to attempt a connection to the CouchDB server (while instantiating a node object)
  • [CHEF-227] – Delete operation of Search Index is not working
  • [CHEF-228] – chef-server under passenger: Controller class not found for controller `registrations’
  • [CHEF-230] – remote_file with a url should include a type of hash option to verify the downloaded file is what we expected
  • [CHEF-237] – Apt provider won’t install msttcorefonts
  • [CHEF-238] – Commands with over 4k of output will block forever
  • [CHEF-244] – Chef server no longer checks openid’s against the authorized_openid_identifiers configuration

Improvement

  • [CHEF-54] – chef-server should be a merb slice
  • [CHEF-129] – Implement pilu’s web-app-theme for chef-server
  • [CHEF-148] – cookbook naming and routing
  • [CHEF-153] – Allow access to a list of OpenID’s via configration.
  • [CHEF-159] – CookbookLoader#load_cascading_files uses Dir.glob(array) syntax, which is unavailable on RHEL and Centos
  • [CHEF-167] – chef-server-slice rake install requires sudo
  • [CHEF-172] – In FreeBSD package provider simplify source parameter "magic" by using PKGNAME in ports Makefile
  • [CHEF-177] – Where multiple ports have the same name allow path to ports to be given
  • [CHEF-192] – speed up yum provider
  • [CHEF-200] – fixes from centos packaging attempt
  • [CHEF-210] – enterprise linux init scripts and configs
  • [CHEF-213] – Fixing typos in the code
  • [CHEF-214] – On Gentoo, services always support the :status command, so enable it by default
  • [CHEF-246] – Should be clearer what tags are attached to a node
  • [CHEF-247] – Let chef-server and chef-client compare checksums in bulk rather than one at a time.

New Feature

  • [CHEF-78] – Add a mixin for parsing a file and replacing lines
  • [CHEF-176] – Chef status page that displays basic info about each chef managed node
  • [CHEF-191] – Enable optional CouchDB storage for OpenID associations and nonces
  • [CHEF-216] – Allow execute/script resources to set umask
Adam Jacob

Adam Jacob is the CTO and co-founder of Chef.