Chef 0.9.16 Released!

While we’re full steam ahead on Chef 0.10 here at Opscode, we know that
upgrading a critical component of your infrastructure can take time. For
that reason, we’re releasing some updates to Chef 0.9 to keep you
running smoothly on 0.9 until you can upgrade. The primary feature of
this release is the ability to specify the version of Chef you’d like to
install when using the knife bootstrap command (or any command that
uses the bootstrap, such as knife ec2 server create). Before this
update, knife bootstrap automatically installs the latest version of
Chef, which means the bootstrap could install Chef 0.10 before you’re
ready to upgrade.

From 0.9.16 on, the bootstrap will default to installing the same
version of Chef that you’re currently using for knife.

Smooth Sailing on 0.9 with Rubygems

In order to keep your infrastructure running smoothly on 0.9 after 0.10
is released, upgrade the host you run knife from:

(sudo) gem install chef -v 0.9.16

…and knife will automatically bootstrap new nodes with the version of
Chef you’re currently using.

Bootstrapping a Specific Version

You can also set the version of Chef you want to use for bootstrapping
via command-line option or configuration parameter. When bootstrapping
a new node, you run:

knife bootstrap HOST --bootstrap-version 0.9.16 (other options...)

To use this with the cloud commands, simply add this line to your knife.rb:

bootstrap_version "0.9.16"

This option is available for all of the rubygems-based bootstrap
scripts–centos5-gems, archlinux-gems, and fedora13-gems will all take
advantage of this option.

Smooth Sailing on 0.9 with Apt

Starting with 0.10, we’ll be making changes the way we structure our apt
repositories. The current apt repo will only get updates within the
0.9.x series. This means that if you’re currently bootstrapping with
apt, you won’t need to make any changes to your workflow unless you
upgrade the host you run knife from to Chef 0.10. Before we ship 0.10,
we’ll make sure that case is covered as well.

Other Improvements

Aside from the bootstrapping compatibility updates, we have a few other minor

  • Updated the retry logic in our HTTP Client to use an exponential
    backoff for 50x responses
  • Set a custom User Agent string in the HTTP Client.
  • Sending SIGQUIT to Chef Client will now cause Chef to log a stack
  • chef-solr-indexer now properly XML escapes keys in nested Hashes.
  • Invalid cache files will be deleted automatically instead of causing
    an error.
  • knife ssh can connect to an arbitrary TCP port.
  • The CentOS Bootstrap Scripts now install rubygems 1.3.7 from source

We’ll see you at 0.10.0!

Dan DeLeo