You may notice the slight but meaningful change in the version. We had always intended to follow the spirit of the Semantic Versioning Specification, but determining what version “1.0” would be kept being put off for the future. With the increase in regular releases, we want to be able to provide separate minor and patch releases, which we have been bundling together in the past.
This release of Ohai and future releases of both Chef and Ohai will be versioned X.Y.Z, where X is a major version with backwards incompatible changes to the API or other significant changes to the stack, Y is a minor version change with new features that are backwards compatible and Z is a patch release with only fixes to regressions and other bugs. The ‘master’ branch will represent the latest major version and we will be creating ‘stable-X’ branches to track the previous major version as needed. We will keep updating the Release Process page on the wiki as this evolves.
Patch releases are intended to be rapid releases with fixes for bugs or regressions and won’t always get blog posts so make sure you’re signed up for the Chef mailing list or the low traffic Opscode Announce mailing list to get notified of releases.
If you’re always installing the latest version of a release, it is important that you take the necessary actions to ensure you don’t pick up unwanted minor releases. The Omnibus and Rubygems knife bootstrap templates will install the same version of Chef on the target system that you are using on your workstation for you. The apt based bootstrap template installs the latest version on the apt repository, because reprepro only supports a single version of a package in the index. You can create your own local apt repository for testing using the reprepro cookbook.
Most of the cloud providers do not provide a reliable way to determine that your instance is running on their service. In the past we’ve relied on pieces of network information that were not definitive and those are failing us or no longer present. This release of Ohai includes a new hinting system that allows a plugin to receive a hint by the existence of a file. By default this is the directory /etc/chef/ohai/hints/. On this release if you create a file named rackspace.json, euclyptus.json or ec2.json in this directory, then Ohai will assume it is in one of those environments. We plan to modify our cloud plugins for knife to create these files next, but you can use this feature now by creating these files yourself through whatever means you prefer. These files are in the JSON format to allow passing additional information about the environment at bootstrap time, such as region or datacenter.
This release fixes a significant regression on Windows that was preventing the collection of network data and adds collection of uptime under Windows. It also includes a work-around to a significant Ruby bug in the garbage collector while running external commands.
Laurent Désarmes and Eric Hankins both really came through this release, with a stellar handling of many issues related to network attributes and the hint system for the cloud attributes respectively. Both of these guys are past MVP recipients and we’re thrilled to have them still being an essential part of our community. Another MVP award to both of you!
The Debian package has been updated. We will be releasing new Omnibus packages based on our Ruby based system for testing tomorrow, which will include this Ohai release.