PMPY: A push-me-pull-ya client for consul + (WIP) vault
PMPY makes it easier to manage key-value data in consul. Currently get/set operations do not consider cas/ModifyIndex, etc. It simply sets or retrieves values from Consul. Both JSON and env formats for input and output.
Pushing data into Consul is as simple as:
$ pmpy consul push --path myapp --value='{"key1": "value1"}'
Pulling it back out again is just as easy:
$ pmpy consul pull --path myapp
When pulling data out of Consul, PMPY allows you to specify multiple paths. The resulting document is a merged document with values specified later overriding previous values. This allows you to easily setup more complex documents to support multiple environments/applications.
For example, given these three paths:
$ pmpy consul push --path myapp/defaults --value='{"host": "foo.bar"}'$ pmpy consul push --path myapp/prod --value='{"database": "prod_db"}'$ pmpy consul push --path myapp/dev --value='{"database": "dev_db"}'
You can retrieve data for a specific environment by specifying mutiple paths:
$ pmpy consul pull --path myapp/defaults --path myapp/prod$ pmpy consul pull --path myapp/defaults --path myapp/prod
Install
$ npm install --save pmpy
Usage
Code
var consul = consul; // prefix is options - defaults to 'pmpy'
CLI
$ npm install -g pmpy$ pmpy --help
Playground
PMPY comes with a docker based playground for Consul and Vault. You will need to install the Docker tools - including compose to use it. Once you have, the playground can be managed from the cli.
pmpy playground --helpplayground <action> Commands: start Start playground services stop Stop playground services restart Restart playground services reset Resets consul & vault without a full restart env Display vault keys
License
MIT © David J. Clarke