chef-solo vs chef-client --local-mode

The Opscode blog post that introduces local mode points out the single difference:

A note about chef-solo

chef-solo still exists, and this obviously has some overlap there. In most cases where you are using chef-solo, you will be able to use chef-client -z in its place, since chef-client has all of chef-solo’s features and more. Only if your recipes specifically test for :solo mode will things be different, since chef-client does not set this variable.

Unless your cookbooks depend on :solo, they are replaceable.


The chef-solo command is now deprecated in favor of local-mode/chef-zero:

https://github.com/chef/chef-rfc/blob/master/rfc031-replace-solo-with-local-mode.md

Since ruby roles (and the ruby DSL for other objects) have been fixed in chef-zero/local-mode, it is now the preferred solution over chef-solo.

The support level of chef-solo at this point is effectively abandonware. When triaging issues chef-solo issues are always lowest priority and nobody is working on them. PRs from the community to fix bugs would be accepted, but there are more bug reports in solo than there are PRs.

No new projects should start using chef-solo. Existing projects should convert.