11

I have a requirement to store configuration information on a per environment basis in a tool.

This is a tool with a GUI for adding/updating configuration values (e.g connection strings). This should have a default value and be able to change this based on different environments.

There should be an API to retrieve these configuration values during deployment to a particular environment to add to the application.

I have searched for a while and can't see any tools that would fit this bill. Are there any suggestions?

Note: Currently the settings are in TeamCity variables and deployment is via PowerShell scripts.

Dan Cornilescu
  • 6,780
  • 2
  • 21
  • 45
tim
  • 111
  • 3

2 Answers2

6

There are many tools that can do something like this, including configuration management tools like Chef, Ansible, or Puppet; and KVS tools like Consul and etcd. You could also integrate it as a build step in your CI server, or sidestep the issue using live configuration at runtime against an external configuration store (again, something like Consul or etcd, or any database at all).

Adrian
  • 783
  • 4
  • 8
1

Possibly a different repo? One with branches for QA, UAT, Prod (of nor more). A repo that's different to your regular "Code as Code" and "Infrastructure as Code" repos.

It is highly nuanced. How much config per env. Is it toggled between releases? Should those toggle states maintain state despite binary deploys. Which of client, customer, guest or user to you maintain config for?

I wrote a bunch of blog entries (and prototypes/demos) on the topic over 5 years - including UIs for the toggling (if you need them).

paul_h
  • 324
  • 1
  • 3