views:

176

answers:

4

My companies' system is build from a collection of ASP.NET websites, webservices, windows services and databases. (around 40 all told)

We maintain three environments - QA, PREPROD and LIVE; but managing what is installed (and working) on each environment is a real pain. We seem to spend more time debugging what is installed & working in each environment that actually developing features.

I'm looking for a "diff" tool at the environment level - something that will tell me what is different between environments, which services are running on each environment etc etc.

Is there any existing tool out there like this?

Thanks!

A: 

We utilize a build server which is responsible for auto deploying sites, services, etc on successful builds to our dev environment.

Because we are using TFSBuild, we use TFSDeployer which monitors the Build Quality setting. When it is flipped to "staging", some powershell scripts execute to move the build into our staging environment.

For production, we also use TFSDeployer with one minor change. Instead of going directly to the production folders, it moves it into backup folders on the production servers. Then the infrastructure team manually copies it from their to the final resting place. This ensures that no one accidentally deploys to production.

All told it took a couple weeks to set up and work out any kinks. Since then everyone is happier and we always know exactly what is in each environment.

Chris Lively
David Laing
I'm not sure what you mean by "stall" If the continuous integration build fails an alert email is broadcast to the group. In that case, the build is not automatically pushed to dev and is not available to be pushed to staging / live. When deploying to stage/live, TFS Deployer sends an email upon completion. We get the details of whether it succeeded or failed in that email.
Chris Lively
+1  A: 

My development team is currently using a tool called ConfigMerge (available on CodePlex) to help us source-control our web.config files. You may not care much about SCM, but a tool like that could help you manage deployments of config files because you could keep a single file that is common to all your servers, and break out the particular XML elements that need to be modified for each server. Let the ConfigMerge tool create the final result and deploy that.

That doesn't help you do a "configuration diff", but it might help reduce the need to.

Ben Collins
Thanks - I'll look into ConfigMerge.When you say SCM, which products are you thinking of?
David Laing
I just mean version control in a general sense. I use SCM because it's widely understood, but I actually really dislike term "configuration management".
Ben Collins
thanks for the link to ConfigMerge. looks sweet!
AndreasKnudsen
A: 

add to what all said, you might also want to use FinalBuilder, it is amazing tool for build automation it has saved me a lot of time doing things similar to what you do, it can automate the whole process, Compiling Visual studio project, file compare, FTPing.

hope this helps.

Does final builder give you some kind of report as to what is currently in each environment?
David Laing
A: 

The closest thing I can think of is the Visual Studio Team System Deployment Designer. You can design a model of the system and it's logical deployment architecture, and you can validate that against the physical deployment. For instance, you can validate that virtual directories are set up correctly, check against versions and patches of components and servers, etc....

You can also create reports "showing each diagram and a list of all the resources and settings for each application, logical server, endpoint, or zone on the deployment diagram. You can also include a list of deployment diagram validation errors and warnings in the report. Application development and infrastructure teams can use this report to share information needed to evaluate conflicts between application requirements and datacenter policy."

Richard Hein