Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/binocarlos/denver
Create layers of ENV variables saved to etcd and deploy docker containers using them
https://github.com/binocarlos/denver
Last synced: 10 days ago
JSON representation
Create layers of ENV variables saved to etcd and deploy docker containers using them
- Host: GitHub
- URL: https://github.com/binocarlos/denver
- Owner: binocarlos
- License: mit
- Created: 2014-03-21T22:22:11.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2014-07-09T12:38:28.000Z (over 10 years ago)
- Last Synced: 2024-09-17T00:17:21.718Z (2 months ago)
- Language: JavaScript
- Size: 910 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
denver
======![Denver](https://github.com/binocarlos/denver/raw/master/denver.jpg)
![Build status](https://api.travis-ci.org/binocarlos/denver.svg)
Create layers of ENV variables saved to etcd and deploy docker containers using them
## installation
```
$ npm install denver -g
```## usage
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```js
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
```js
den.set('app1', 'test', 'hello', function(err){
// value is written
})
```### den.get(stack, key, callback)
get a value from a stack
```js
den.get('app1', 'test', function(err, value){
// value is here!
})
```### den.ls(callback)
list all of the stacks
```js
den.ls(function(err, stacks){
// stacks is an array of stack names
})
```### den.rm(stack, callback)
remove a stack from the db
```js
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.
```js
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:
```js
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
```bash
$ denver ls
```### denver rm
Remove a stack from the database
```bash
$ denver rm myapp
```### denver get
Print the value of a single environment variable
```bash
$ denver get myapp ADMIN_EMAIL
```### denver set
Write the value of a single environment variable
```bash
$ denver set myapp ADMIN_EMAIL [email protected]
```### denver del
Remove a value from an environment
```bash
$ denver del myapp ADMIN_EMAIL
```### denver env
Print the whole environment for a stack
```bash
$ denver env myapp
```You can 'merge' several stacks with the env command - this lets you have 'global' envs or whatever:
```bash
$ denver env defaultenv myapp
```When 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 myapp
```This would output:
```
-e [email protected] -e HOSTNAME=bobthebuilder.com
```### denver inject
Read env vars one per line from stdin
file - myenv.txt:
```
HELLO=world
[email protected]
`````` bash
$ cat myenv.txt | denver inject myapp
$ denver docker myapp
```This would print:
```
-e HELLO=world -e [email protected]
```## license
MIT