Is there a recommended automated production environment setup for Microsoft stack?

We are looking at rebuilding our small production running redundant servers with IIS, .Net 4, MSSqlServer 2003 setup.

The previous tri-server configuration evolved organically and has a lot of hand-configured pieces that sort-of mesh together but not in any complete way. Plus the deployment story is a bunch of unversioned PowerShell scripts that work most of the time. Same with configuration files, slightly different between production and development (and not in an automatically generated way). Same with logging, monitoring, etc.

I am curious if there is a consensus on how such things should be setup in a convention over configuration way to minimize system administration efforts.

In Ruby world, there seem to be consensus on VM images + Chief/Puppet + GitHub. Or services like EngineYard for external hosting. But I was not able to find similar advice for MS/.Net environment.

I am looking for low-cost solution, not an all-singing all-dancing enterprise software that would be an overkill for 4-6 VMs.


Honestly, Group Policy is made for managed configuration, and can probably be leveraged for what you want. (It wasn't just invented for desktop management.) You can manage them with Chef/Puppet/CFEngine, but it seems to me that Windows is a second-class citizen in Chef.

Chef and Puppet are written with the *nix mindset of "everything is a file", and Windows is very seldom like that.


If you're running any vSphere license besides the free one, you can configure your Windows VM and use it as a template. vSphere will allow you to deploy from that template and apply customizations (such as setting the system name, configuring the IP settings, entering the product key).

You can read more about it here: http://vinf.net/2009/07/09/how-to-deploy-a-windows-2008-server-from-a-template-with-vsphere/