The new Chef version (10.14.0) released earlier this month delivers an important set of features previously presented at the Chef conference last May. The long anticipated dry run or noops feature (finally named whyrun) allows Chef to predict what changes would be applied to a system to get it up to date according to a given set of recipes.
Because there can be interdependencies between steps in one or more recipes, the tool makes educated assumptions to determine the current state of the system (for example if a service should be running but its state cannot be determined Chef assumes the service would have been installed previously and reports that service would be started, not installed).
It also assumes conditional commands (i.e. containing not_if or only_if attributes) are only used to prevent unnecessary actions (for example don’t upgrade a software installation if the latest version is already installed) and do not change system state.
Another feature presented in May that was delivered with this release is the possibility to choose the output format, from minimal to verbose (rspec-like).
Finally, error inspecting is another new feature that could help Chef users to reduce problem debugging time by suggesting the culprit step in a recipe for some classes of errors.