Chef Server vs Chef Solo

Hello guys!

I’m putting together a structure to run a Rails application. The application itself runs on Heroku. However, it makes requests to a cluster, which performs the call through a program in C.

To be able to recover from crashes faster, I want to create a routine using Chef. I managed to write a “cookbook” that installs everything you need, and it works perfectly when I use a Vagrant virtual machine.

However, when I apply for a real server, it fails. Besides, I’m using Chef Solo, and I need to manually install some things on the machine before running the script, which is not very practical.

I do not know if I should take the Chef Server in this case. I’m afraid that is a “great” tool for a “small” need.

This cluster is composed of only three machines, this should not increase much. However, the application also makes requests to another cluster slightly larger (6 machines), which despite being very quick to install, could also make use of the Chef Server.

Do you think I should go with the Chef or Chef Solo Server? Is there any didactic guide about it? The developer documentation is very confusing.

Thank you!

I notice that this is almost a year old, but I actually am more of a SysAdmin/DevOp than WebDev, so maybe I can help!

I currently use Puppet, but am working on switching to Chef and agree entirely about the information being spotty, it’s the same for Puppet (not to mention that Puppet isn’t 100% Ruby, so it’s hard to figure out if you do have an issue… and the community are mostly a-holes).

If you haven’t done it already, how many servers (total) are you looking to run Chef on? You can give Hosted Chef a try for about 5 servers for free. It might help you decide whether you want to go the Chef Server route or not.


I’d suggest checking out the knife-solo gem. It allows you to deploy using Chef Solo, but does all the heavy lifting of syncing cookbooks to remote servers and running recipes for you!