denver v0.3.2
denver

Create layers of ENV variables saved to etcd and deploy docker containers using them
installation
$ npm install denver -gusage
denver will save ENV variables for a stack under a key in etcd.
it will merge stacks in order so one stack can inherit from another.
it will spit out stacks environment in a few useful formats.
api
var den = denver(options)
create a new denver object using the options:
- host - the etcd host (defaults to 127.0.0.1)
- port - the etcd port (defaults to 4001)
- key - the base key (default to /denver)
You can always use the envrionment variables to set these values:
- DENVER_HOST
- DENVER_PORT
- DENVER_KEY
var denver = require('denver');
var den = denver({
	host:'127.0.0.1',
	port:4001,
	key:'/denver'
});den.set(stack, key, value, callback)
set a value for a stack
den.set('app1', 'test', 'hello', function(err){
	// value is written
})den.get(stack, key, callback)
get a value from a stack
den.get('app1', 'test', function(err, value){
	// value is here!
})den.ls(callback)
list all of the stacks
den.ls(function(err, stacks){
	// stacks is an array of stack names
})den.rm(stack, callback)
remove a stack from the db
den.rm('app1', function(err){
	// the app is gone
})den.env(stacks, callback)
get an object with the values for the environment that is created from merging the stacks array.
den.env([
	'basestack',
	'applicationstack'
], function(err, env){
	// env is an object that is a merged stack env
})You can also just get a single stack env:
den.env('app1', function(err, env){
})events
den.on('set', function(stack, key, value){})
emitted when a value is set
den.on('del', function(stack, key, value){})
emitted when a value is deleted
cli
denver ls
List the stack names we have environments for
$ denver lsdenver rm
Remove a stack from the database
$ denver rm myappdenver get
Print the value of a single environment variable
$ denver get myapp ADMIN_EMAILdenver set
Write the value of a single environment variable
$ denver set myapp ADMIN_EMAIL bob@thebuilder.comdenver del
Remove a value from an environment
$ denver del myapp ADMIN_EMAILdenver env
Print the whole environment for a stack
$ denver env myappYou can 'merge' several stacks with the env command - this lets you have 'global' envs or whatever:
$ denver env defaultenv myappWhen you merge - the last stack will take precendence - so myapp -> ADMIN_EMAIL would overwrite defaultenv -> ADMIN_EMAIL.
You can merge as many stacks as you want.
denver docker
You can also print the environment in a docker friendly format:
$ denver docker defaultenv myappThis would output:
-e ADMIN_EMAIL=bob@thebuilder.com -e HOSTNAME=bobthebuilder.comdenver inject
Read env vars one per line from stdin
file - myenv.txt:
HELLO=world
ADMIN_EMAIL=bob@thebuilder.com$ cat myenv.txt | denver inject myapp
$ denver docker myappThis would print:
-e HELLO=world -e ADMIN_EMAIL=bob@thebuilder.comlicense
MIT