Getch is a very minimalistic and simple hierarchical configuration store and template-engine queryable via HTTP.
The project is still in a very early stage but all existing features are stable and tested in a productive environment.
Checkout the Getch Docker image
GETCH_VERSION="x.x.x"
HIERARCHY_BASE=<path_to_getch_hierarchy_base_dir>
HOSTNAME=<dns_resolable_hostname>
ENCRYPTION_PASSWORD=<secret>
BIND_PORT=4382
# download the standalone jar
curl -L -O https://github.com/rkrombho/getch/releases/download/$GETCH_VERSION/getch-$GETCH_VERSION.jar
# create a config file
mkdir ~/.getch
(
cat <<EOF
getch.base.directory = '$HIERARCHY_BASE'
getch.encryption.password = '$ENCRYPTION_PASSWORD'
getch.trusted.proxies = [ '127.0.0.1' ]
getch.feature.templating.enabled = true
EOF
) > ~/.getch/getch.groovy
# run the embedded servlet container
java -jar getch-$GETCH_VERSION.jar port=$BIND_PORT host=$HOSTNAME
HIERARCHY_BASE=<path_to_getch_hierarchy_base_dir>
HOSTNAME=<dns_resolable_hostname>
BIND_PORT=4382
# create a sample hierarchy
mkdir -p $HIERARCHY_BASE/myorg/myservice/myenvironment/mytier/$HOSTNAME
# create a sample key=value file
echo "testkey=testvalue" > $HIERARCHY_BASE/myorg/myservice/myenvironment/mytier/$HOSTNAME/config.properties
# query the value we just created (note: your default network interface must DNS resolve to $HOSTNAME)
curl -X GET http://$HOSTNAME:$BIND_PORT/testkey
> testvalue
# list all values
curl -X GET http://$HOSTNAME:$BIND_PORT/list
> textkey=testvalue
# create a template file
echo "MyDirective \${testkey}" > $HIERARCHY_BASE/myorg/myservice/my.conf
# query the templated file
curl -X GET -O http://$HOSTNAME:$BIND_PORT/my.conf
cat my.conf
> MyDirective testvalue
Note: There is also a command line client available for Getch called getchctl which supports the majority of the features that Getch offers. It's available for Windows and Linux, for i386 and amd64 architectures.
For a more detailed documentation and description of all features please browse the Getch wiki