kvp.io is a micro-service designed to empower automation, in any cloud, in any data-center, with ease.
Store key/value data, generate artifacts from templates, and lookup service endpoints without managing a cluster or paying for servers. Exposed as a REST api, kvp.io is accessible with our client, our python api, curl, or whatever HTTP tool you prefer.
Bucket
Store and retrieve pretty much anything. Simple values or deeply nested, it doesn't matter. If it can be serialized to JSON, you can stuff it in there.
Templates
Store Jinja2 templates and render them using data from your bucket or one time data sets. Seriously powerful, and the only limitation is your imagination.
Service Discovery
Combining buckets and templates, you can build a service discovery and configuration generation system similar to zookeeper, etcd, and consul, minus the cluster.
Why? Simplicity, reusability, automation, and self-provisioning systems. Here are some examples, taken from the wild, to get your synapes firing.

Centralized value storage and retrieval

Let's say you use Ansible's ansible-pull command. It's called from a provisiong script during VM deployment or maybe it runs routinely via cron. What if you need to point ansible-pull to a different repo?

# On your machine...
$ kvpio bucket set repos/ansible git://git.company.com/ansible/playbooks.git
# Or with curl...
curl -X POST -d 'git://git.company.com/ansible/playbooks.git' https://api.kvp.io/bucket/repos/ansible
# In your deployment script...
ANSIBLE_REPO=`kvpio bucket get repos/ansible`
ansible-pull -U "$ANSIBLE_REPO" ...

Basic service discovery

You host an app and a service on Amazon AWS. Your app relies on that service. Your service lives in on an ephemeral VM, meaning it's IP may change. How does your app locate your service without DNS?

# On the server hosting your service...
SVC_IP=`ifconfig eth0 | awk '/inet addr/ {print $2}' | cut -d: -f2 | cut -d' ' -f1`
kvpio bucket set services/my_service/ip "$SVC_IP"
kvpio bucket set services/my_service/port 8001
kvpio bucket set services/my_service/host `hostname -f`
# On the server hosting your app...
echo `kvpio bucket get services/my_service/ip`:`kvpio bucket get services/my_service/port`
# 10.1.1.123:8001
# Alternatively, get the service information as json
kvpio bucket get services/my_service
# {"port": 8001, "ip": "10.1.1.123", "hostname": "my-svc.company.local"}

Render templates

So, you've pushed a few services to your bucket. Maybe you need to use that information in the hosts file on some of your servers.

# On your machine...
HOSTS_TPL=`cat <<EOF
127.0.0.1    localhost
{% for key, svc in services.items() %}
{{ svc.ip }}    {{ svc.host }}
{% endfor %}
EOF`
kvpio template set hostsfile "$HOSTS_TPL"
# On your server...
kvpio template get hostsfile > /etc/hosts
# The resulting file will look something like this
# 127.0.0.1    localhost
# 10.1.1.5    my-app.company.local
# 10.1.1.6    my-svc.company.local
These examples just scratch the surface of what can be acheived with kvp.io. Get creative with code templates, mail templates, service discovery and health reporting. kvp.io is just another tool in your toolbelt.
Simple, fast, and flexible. Sign-up now to get an API key.
kvp.io is currently in limited public beta. We're still gathering metrics, optimizing, and improving. So for now, you get 500 reads per month and 2 MB of storage. If you run over, we'll let you know. If you need more, you let us know.
Working...
Title
Message
Action