Chef Client 12.3.0 Released

Ohai Chefs!

We’ve just released Chef Client 12.3.0. This release includes bug fixes as well couple of new goodies… we hope you enjoy them. You can check out the CHANGELOG for a full set of the changes.

# What’s New
## Socketless Chef Zero Local Mode
All requests to the Chef Zero server in local mode use Chef Zero’s new
socketless request mechanism. By default, Chef Zero will still bind to a
port and accept HTTP requests on localhost; this can be disabled with
the `–no-listen` CLI flag or by adding `listen false` to the chef client
or knife configuration file.

## Minimal Ohai Flag

Chef Client, Solo, and Apply all now support a `–minimal-ohai` flag.
When set, Chef will only run the bare minimum Ohai plugins necessary to
support node name detection and resource/provider selection. The primary
motivation for this feature is to speed up Chef’s integration tests
which run `chef-client` (and solo) many times in various contexts,
however advanced users may find it useful in certain use cases. Any
cookbook that relies on other ohai data will absolutely not work in this
mode unless the user implements workarounds such as running the ohai
resource during the compile phase.

## Dynamic Resource Resolution and Chef Class Façade

Resolution of Resources is now dynamic and similar to Providers and handles
multiple resources having the same provides line on a given platform. When
the user types a resource like ‘package’ into the DSL that is resolved via
the provides lines, and if multiple classes provide the same resource (like
Homebrew and MacPorts package resources on Mac) then which one is selected
is governed by the Chef::Platform::ResourcePriorityMap.

In order to change the priorities in both the ResourcePriorityMap and
ProviderPriorityMap a helper API has been constructed off of the Chef class:

* `Chef.get_provider_priority_array(resource_name)`
* `Chef.get_resource_priority_array(resource_name)`
* `Chef.set_provider_priority_array(resource_name, Array, *filter)`
* `Chef.set_resource_priority_array(resource_name, Array, *filter)`

In order to change the `package` resource globally on MacOSX to the MacPorts provider:

`Chef.set_resource_priority_array(:package, [ Chef::Resource::MacportsPackage ], os: ‘darwin’)`

That line can be placed into a library file in a cookbook so that it is applied before
any recipes are compiled.

## How do I get it?
You can visit our download page.

Additionally you can use this command to download the latest version of the Chef Client on platforms other than windows:

curl -L | sudo bash -s -\- -v 12.3.0

For Windows, you can download this version using this link: Chef Client 12.3.0

## Get Help
If you run into any issues with this release, please file an issue on Github or drop an email on our chef and chef-dev mailing lists.

Thom May

Thom is an engineer on Chef's Community Engineering team, based in London. He works on Chef, ohai, cookbooks and pretty much anything else Chef has ever shipped.