
How do I support web infrastructure for many sites at a time?
At the UW center for commercialization there are lots and lots of projects to work on. The mission is encouraging new companies, and each one may need a website. There are also many internal projects. We need to spin up sites and servers rapidly, and provide each project with a standard environment and good base system. While we have had success with hosting multiple sites on a VMWare CloudFoundry server for simple sites, for others we need to have an environment that supports SSL and other more uniquely customizable configuration options. The challenge is how to do this process well, and make it easily repeatable.
Enter Babushka and Chef. Actually, Ben Hoskings should have called Babushka “sous-chef”, because it’s extremely helpful to use, to get ready for Chef. Even better, it can also help set up your workstations, such as your mac, as well as your servers.
Quoting Ben about Babushka vs. Chef (or Puppet):
I think they’re both great tools, and I see babushka as being complementary to them. In particular, I think their strengths are complementary. You can discover babushka and be running deps after a single shell command, whereas chef and puppet have much steeper learning curves. But then, babushka has a fairly rigid ceiling (i.e. a single system), and on its own, it doesn’t scale at all. That was a deliberate design decision on my part—chef and puppet are already doing a good job at the job they’re intended for, which I see as managing ecosystems of machines. Babushka is much more focused on the small end of the scale; in fact, one of the things I’ve tried to keep in mind while designing it has been “no job too small”.
Also, and perhaps more importantly, I’m not designing babushka specifically as a deployment automation tool; I’m thinking more generally than that. One example: things like installing TextMate bundles, configuring OS X/Linux preferences, and the like. Things where you can say “I do it this way—you might like it, run my dep and give it a go.”
It was especially helpful to discover Ivan Vanderbyl’s article on Bootstrapping Chef with Babushka. His scripts needed an update for Ubuntu Oneiric (11.10) and I’ve posted them on my GitHub. You should be able to follow the ‘other ruby ivan’s instructions but just sub my github name for his.