Automatic Provisioning

If you’re like my small company, we do not have a dedicated IT department. Every developer manages their own development environment. As you can imagine, the systems that we build get out of sync very easily. (…I’m on java7, why are you using java6? I’m using apache, you’re using tomcat? Did you install mysql?…)

Even worse, is when it comes to the discrepancy in the production environment and development environment. The production environment may have evolved over time, with new components added and old components upgraded. But how were they installed–using a zipped binary, from a source tar, or the distro package manager? These become relevant questions when you want to remove, upgrade, and just look for files.

A lot of companies have resorted to taking snapshots of their production server over time. This is what’s referred to as the Golden Image. This can be expensive. It also isn’t an elegant solution and will bring headaches when you need to remove, upgrade or add new system components.

So to summarize, here’s a list of problems off the top of my head (there are probably more):

  • Developers are not IT people

    • Every developer has a different development environment, with different versions of various components (java6 vs java7, tomcat6 vs tomcat7,…)

  • Developers work on multiple projects

    • How do you resolve the discrepancy if one project needs tomcat6 and another needs tomcat7?

  • Environments evolve and are hard to maintain

    • You upgrade to java7, but did you really remove all references to java6?

  • Development environments are not aligned with Production environments

  • Production environments need to be reproducible

    • Current using the “Golden Image” solution which has flaws

I believe the right way of doing this is using automatic configuration management tools like Vagrant along with Puppet.

Configuration Management relies on the art of automation–you start with a generic machine, automatically install and set up the system to get it to a development- or production-ready state.

Here is an excellent article of the two approaches.

In the next article, we’ll take a look at Vagrant and Puppet a little more closely.

Tagged , , , ,

One thought on “Automatic Provisioning

  1. […] we’re going to do it using Vagrant and Puppet. I assume you buy into the Automatic Provisioning method and have some understanding of Vagrant and […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: