I am about to start a new project which will, in part, require deploying many identical nodes of approximately three different classes:
- Data nodes, which will run sharded instances of MongoDB.
- Application nodes, which will run instances of a Ruby on Rails application and an older ASP.NET MVC application.
- Processing nodes, which will run jobs requested by the application nodes.
All the nodes will run on instances of Ubuntu 10.04, though they will have different packages installed.
I have some familiarity with Chef from previous projects, though I don't consider myself an expert. In an effort to do due diligence, I have been investigating alternative possibilities. We have a number of folks in-house who are long-time Puppet users, and they have encouraged me to take a look.
I am having trouble evaluating both choices, though. Chef and Puppet share many of the same domain terminology -- packages, resources, attributes, and so on, and they have a common history that stems from taking different approaches to the same problem. So in some sense they are very similar. But much of the comparison information I've found, like this article, is a little outdated.
If you were starting this project today, what questions would you ask yourself to decide whether you should use Chef or Puppet for configuration management? (Note: I don't want answer to the question "Should I use Chef or Puppet?")