[
  {
    "path": ".travis.yml",
    "content": "language: ruby\nrvm:\n  - 2.2\nbefore_script:\n  - gem install awesome_bot\nscript:\n  - awesome_bot -f README.md -w consul.io\nnotifications:\n  email: false\n"
  },
  {
    "path": "README.md",
    "content": "# Awesome Consul [![Build Status](https://api.travis-ci.org/josegonzalez/awesome-consul.svg?branch=master )](https://travis-ci.org/josegonzalez/awesome-consul)\n\nThis is a list of awesome third-party consul projects, libraries.\n\n## Why consul\n\n+ Easy to install\n+ HTTP APIs\n+ Design for distributed system\n+ Flexible health check\n+ Excellent documentation\n\n## Table Of Contents\n\n- Projects\n    - [Alerting](#alerting)\n    - [Authentication and Authorization](#authentication-and-authorization)\n    - [Backup and Restore](#backup-and-restore)\n    - [CLI Tools](#cli-tools)\n    - [Command Execution](#command-execution)\n    - [Configuration Management](#configuration-management)\n    - [Monitoring](#monitoring)\n    - [Other](#other)\n    - [Packaging](#packaging)\n    - [Provisioning](#provisioning)\n    - [Programming Language Clients](#programming-language-clients)\n    - [Service Discovery](#service-discovery)\n    - [UI](#ui)\n    - [Errata](#errata)\n- Links\n    - [Articles](#articles)\n    - [Presentations](#presentations)\n\n## Projects\n\n### Alerting\n\n+ [consulalerting: Alert groups, teams, individuals by tags and plugins](https://github.com/jrxFive/consulalerting)\n+ [consul-alerts: Simple daemon to send notifications based on Consul health checks](https://github.com/AcalephStorage/consul-alerts)\n\n### Authentication And Authorization\n\n+ [consult: Consul helper tool for quick query based SSH and more](https://github.com/outbrain/consult)\n+ [ssh-hecate: SSH authorized_keys management via Consul](https://github.com/ncfritz/ssh-hecate)\n\n### Backup and Restore\n\n> *As of Consul 0.7.1, you can use [consul snapshot](https://www.consul.io/docs/commands/snapshot) for some use-cases.*\n\n+ [Consul KV backup](https://github.com/kailunshi/consul-backup)\n+ [consul-backinator](https://github.com/myENA/consul-backinator)\n+ [consul-snapshot: A consul backup daemon to S3](https://github.com/pshima/consul-snapshot)\n\n### CLI Tools\n\n+ [consul-cli: Command line interface](https://github.com/mantl/consul-cli)\n+ [consul-bash-completion: Consul Bash Completion library](https://github.com/nzroller/consul-bash-completion)\n+ [fileconsul: Share files stored in a consul cluster](https://github.com/foostan/fileconsul)\n\n### Command Execution\n\n> *As of Consul 0.5, you can use [consul lock](https://www.consul.io/docs/commands/lock) for many of these tasks.*\n\n+ [cdsh: Distributed SSH](https://github.com/grubernaut/cdsh)\n+ [consul-do: Do something based on leadership status](https://github.com/zeroXten/consul-do)\n+ [consul-lock: Runs another program with a Consul session/kv locked.](https://github.com/fujiwara/consul-lock)\n+ [consul-locker: Enforce that a program runs only on one machine at a time in a datacenter.](https://github.com/fidian/consul-locker)\n+ [cronsul: Very simple distributed periodic job scheduler](https://github.com/EvanKrall/cronsul)\n+ [dkron: Distributed, fault tolerant job scheduling system](http://dkron.io/)\n+ [metronome: Scheduling tool on Consul](https://github.com/cloudconductor/metronome)\n+ [sifter: Helps to prevent Consul from firing prematurely](https://github.com/darron/sifter)\n\n### Configuration Management\n\n+ [confd: Manage local application configuration files using templates and data from etcd or consul](https://github.com/kelseyhightower/confd)\n+ [consul-template: Generic template rendering and notifications with Consul](https://github.com/hashicorp/consul-template)\n+ [crypt: Store and retrieve encrypted configs](https://github.com/xordataexchange/crypt)\n+ [envconsul: Read and set environmental variables for processes from Consul](https://github.com/hashicorp/envconsul)\n+ [hashi-helper: Disaster Recovery and Configuration Management for Consul and Vault](https://github.com/seatgeek/hashi-helper)\n+ [hiera-consul: Hiera backend plugin for Consul](https://github.com/lynxman/hiera-consul)\n+ [kvexpress: Go program to move data in and out of Consul's KV store](https://github.com/DataDog/kvexpress)\n+ [Consul.conf: responsive web interface for managing configuration of your services in Consul KV store](https://github.com/lukaszlach/consul-conf)\n\n### Load Balancing\n\n+ [consul-envoy: Consul to Envoy Bridge](https://github.com/jippi/consul-envoy)\n+ [fabio: A fast, modern, zero-conf load balancing HTTP(S) router for deploying microservices managed by consul](https://github.com/fabiolb/fabio)\n+ [Træfɪk: a modern reverse proxy](https://traefik.io/)\n+ [nginx-upsync-module - Nginx C module, sync upstreams from consul or others](https://github.com/weibocom/nginx-upsync-module)\n\n### Monitoring\n\n+ [liaison: A daemon that collects service health information from Consul and converts it to time series data](https://github.com/cruatta/liaison)\n\n### Other\n\n+ [consul-topology-visualizer: Visualize latency between your Consul nodes](https://github.com/vmarchaud/consul-topology-visualizer)\n+ [consulfs: ConsulFS is a FUSE distributed filesystem backed by a Consul Key-Value store](https://github.com/bwester/consulfs)\n+ [consulmq: Golang library for using consul as a message queue](https://github.com/peterfraedrich/consulmq)\n+ [git2consul: Mirrors for multiple git repos](https://github.com/breser/git2consul)\n+ [uwsgi-consul: uWSGI plugin for consul integration](https://github.com/unbit/uwsgi-consul)\n\n### Packaging\n\n+ Debian\n    + [bcandrea/consul-deb](https://github.com/bcandrea/consul-deb)\n+ RPM\n    + [tomhillable/consul-rpm](https://github.com/tomhillable/consul-rpm)\n\n### Provisioning\n\n+ Ansible\n    + [griggheo/ansible-consul-template](https://github.com/griggheo/ansible-consul-template)\n    + [mattupstate/vpc-consul](https://github.com/mattupstate/vpc-consul)\n    + [mattfinlayson/ansible-consul](https://github.com/mattfinlayson/ansible-consul)\n    + [sgargan/consul](https://github.com/sgargan/consul)\n+ Chef\n    + [adamkrone/chef-consul-template](https://github.com/adamkrone/chef-consul-template)\n    + [darron/consul-cookbook](https://github.com/darron/consul-cookbook)\n    + [sous-chefs/consul](https://github.com/sous-chefs/consul)\n+ Docker\n    + [hashicorp/docker-consul](https://github.com/hashicorp/docker-consul)\n    + [foostan/consul-with-docker](https://github.com/foostan/consul-with-docker)\n    + [gliderlabs/docker-consul](https://github.com/gliderlabs/docker-consul)\n+ Puppet\n    + [solarkennedy/puppet-consul](https://github.com/solarkennedy/puppet-consul)\n+ Salt\n    + [systembell/salt-consul](https://github.com/systembell/salt-consul)\n\n### Programming Language Clients\n\n+ Go\n    + [armon/consul-api](https://github.com/armon/consul-api)\n    + [consulstructure: Decode Consul data into Go (Golang) structures and watch for updates](https://github.com/mitchellh/consulstructure)\n+ Java\n    + [Ecwid/consul-api](https://github.com/Ecwid/consul-api)\n    + [rickfast/consul-client]( https://github.com/rickfast/consul-client)\n+ Node.js\n    + [gjohnson/consul-node](https://github.com/gjohnson/consul-node)\n    + [silas/node-consul](https://github.com/silas/node-consul)\n+ PHP\n    + [baldurrensch/consul-php](https://github.com/baldurrensch/consul-php)\n    + [FriendsOfPHP/consul-php-sdk](https://github.com/FriendsOfPHP/consul-php-sdk)\n+ Python\n    + [cablehead/python-consul](https://github.com/cablehead/python-consul)\n    + [gmr/consulate](https://github.com/gmr/consulate)\n    + [xav-b/pyconsul](https://github.com/xav-b/pyconsul)\n+ Ruby\n    + [WeAreFarmGeek/diplomat](https://github.com/WeAreFarmGeek/diplomat)\n    + [xaviershay/consul-client](https://github.com/xaviershay/consul-client)\n+ Scala\n    + [codacy/scala-consul](https://github.com/codacy/scala-consul)\n    + [getnelson/helm](https://github.com/getnelson/helm)\n\n### Service Discovery\n\n+ [connectable: Magic proxy for internal services](https://github.com/gliderlabs/connectable)\n+ [registrator: Service registry bridge for Docker with pluggable adapters](https://github.com/gliderlabs/registrator)\n+ [resolvable: Host-level DNS gateway for Docker](https://github.com/gliderlabs/resolvable)\n\n## Links\n\n### Articles\n\n+ [Consul at Datadog](https://www.datadoghq.com/blog/engineering/consul-at-datadog/ ) - Article by Darron Froese on how Datadog deploys consul in production.\n+ [Monitoring Consul Health and Performance](https://www.datadoghq.com/blog/monitor-consul-health-and-performance-with-datadog/) - Article by @vagelim on how to monitor consul.\n+ [Securing Consul](https://www.mauras.ch/securing-consul.html) - Article on making your consul setup more secure than the defaults give you.\n+ [Managing Secrets with Vault and Consul](https://testdriven.io/blog/managing-secrets-with-vault-and-consul/) - This post looks at how to set up and use Hashicorp's Vault and Consul to securely store and manage secrets.\n+ [Configuration management with Consul](https://medium.com/magnet-me-engineering/configuration-management-with-consul-a36cfa1252ea) - Article by Michael de Jongon on how to manage the configuration of many different services located in a cluster where services are running in different datacenters\n### Presentations\n\n+ [Running Consul at Scale—Journey from RFC to Production](https://www.usenix.org/conference/srecon16/program/presentation/froese) (SRECON 2016)\n\n### UI\n+ [consul-power-ui](https://github.com/shweshi/consul-power-ui)\n+ [Hashi-UI](https://github.com/jippi/hashi-ui)\n\n### Errata\n\n#### ZeroRPC\n\n[consul.d](consul.d) is an example configure file that consul working with ZeroRPC.\n\nFirst, start a zerorpc server:\n\n```\n$ zerorpc --server --bind tcp://*:8081 time\n```\n\nThen, start the consul agent and the web UI:\n\n```\n$ bin/consul agent -config-dir ./consul.d\n```\n"
  },
  {
    "path": "consul.d/basic_config.json",
    "content": "{\n  \"datacenter\": \"dc1\",\n  \"data_dir\": \"/tmp/consul/\",\n  \"log_level\": \"INFO\",\n  \"node_name\": \"localhost\",\n  \"server\": true,\n  \"bootstrap_expect\": 1,\n  \"advertise_addr\": \"127.0.0.1\",\n  \"bind_addr\": \"127.0.0.1\",\n  \"client_addr\": \"0.0.0.0\",\n  \"ui_dir\": \"./web/dist\"\n}\n"
  },
  {
    "path": "consul.d/time.json",
    "content": "{\n    \"service\": {\n        \"name\": \"time\", \n        \"tags\": [\"rpc\"], \n        \"port\": 8081,\n        \"check\": {\n            \"script\": \"zerorpc --connect tcp://127.0.0.1:8081 --timeout 1 _zerorpc_ping\",\n            \"interval\": \"60s\"\n        }\n    }\n}\n"
  }
]