Im looking for a tool that will allow my company to manage configuration and user preferences for both our server and desktop applications.
We have a mix of Java, C# and Node applications, with multiple environments and regions. Our configuration is fairly complex and we are looking for something that allows us to define a base configuration, and then allow us to override certain settings on a case by case basis. e.g. suppose we have a setting 'numberOfConnections', we would want to be able to set the value globally to 10, but to be able to override it to say 5 for Production users in Sydney, 2 for anything running in the development environment, except for user jdoe, who should have a value of 10.
Ideally it would be expressed as a set of rules - conceptually:
[APP1 * * *] // Global settings for APP1 numberOfConnections: 10 [APP1 DEV * *] // Development env settings numberOfConnections: 2 [APP1 PROD SYD *] // Sydney Production users numberOfConnections: 5 [APP1 DEV * jdoe] // Development Settings for user jdoe numberOfConnections: 10
Additionally we have a few other requirements:
- It needs to have an interface that is accessible over REST (or some other open protocol)
- It should be able to return all configuration based on a query
- Applications will connect at startup to retrieve their configuration, getting notification of changes while the app is running would be great, but is a nice to have.
- It needs to be flexible in how the keys are defined (APP/ENV/Region/User is just an example)
- It needs some sort of GUI management tool for our OPS team to use (preferably web based)
- Ideally it would be open source
- We need to be able to run it internally on our Linux servers (i.e. not a cloud service)