Background/Our situation:
Our environment has many components, including database, Windows Server, Linux, ETL platform, Scheduler Platform, and about 5 other types (so 8 total components = code repositories). I would say we have a fairly complex ecosystem with our application interacting with other applications in our enterprise.
Each component has its own source code repository, which triggers their own separate builds.
We have 50+ dev/qa environments and every other year or so we have to tear them all down or redo them somehow due to server/platform EOL and things like that.
Problem Statement I'm trying to help solve a problem for our environment management personnel (let's call them EnvOps for lack of better term).
Their responsibilities are the following:
- Creating new environments
- Updating environments (with latest builds), including production
So for each of these 50+ environments, we have 8 components per environment. For each component/environment combination, the EnvOps (and sometimes the developer if they're paranoid about making sure it's right) will check-in the environment configurations; we call these "environment properties" files. Doing the math, these are about 400 environment files for the EnvOps to manage. Some properties files have as many as 500 lines of values. Most average around 200.
The problem here is that creating these properties files are a drag and very tedious/cumbersome. I would like to reduce the strain for our EnvOps. I feel like we can't be the only ones having this problem, but I am failing to find patterns online (or I"m not searching the right way) for how to better manage these. The way we do it now is very error prone. When they create a new environment, what they do is just copy some stable environment's properties file (i.e. production) and then do a search and replace and type things in. To me this is error prone.
Another problem is when a developer adds a new key/value pair to a property file, the EnvOps is responsible for updating all the other property files or else something might break.
One thing I"m thinking of is to create a single tool that will take in 500+ inputs and then output out 8 files for a given environment - basically maven with a UI.
Is there any other ideas or solutions that you would do?