I am doing a lot of semi-automated
application configuration management at the moment. I'm working on a system that has about 30
to 40 interdependent services, web sites, and applications. With an expanding
team, splitting into several teams from one large team, the organisation needs
to be able to easily replicate development, test and UAT environments on a team by team basis.
We could use virtualisation to replicate a master environment set consisting of
database and code servers, giving each team a clone of this, but we would still need
to invest a lot of time configuring end points and database connection strings.
Whilst trying to solve this problem I came across a really
interesting tool that almost does what I think is required.
Octopus is an automated deployment tool developed by Paul Stovell for .NET that uses
Nuget and configuration conventions to push out applications in a very
effective way to multiple environments.
Octopus has a central server that pushes packages out to
tentacles that sit on servers. The tentacles look after the deployment server
side meaning permission issues are never a problem.
One of the great things is the way you can store all your application or web configuration variables and easily assign different configuration sets to different environments. This is one of the key features for me.
This is pretty much what I want, except that it is heavily
dependent on using Nuget packages. This is not a massive issue and if my proof
of concept goes well, I will try and convince the teams that they need to be
generating Nuget packages as part of their build process. It does actually link into tools like teamcity very well to do this so it may even be possible to leverage the generation of artefacts and use them as the packages.
Related Tools: