├── .travis.yml ├── README.md └── consul.d ├── basic_config.json └── time.json /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 3 | - 2.2 4 | before_script: 5 | - gem install awesome_bot 6 | script: 7 | - awesome_bot -f README.md -w consul.io 8 | notifications: 9 | email: false 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Consul [![Build Status](https://api.travis-ci.org/josegonzalez/awesome-consul.svg?branch=master )](https://travis-ci.org/josegonzalez/awesome-consul) 2 | 3 | This is a list of awesome third-party consul projects, libraries. 4 | 5 | ## Why consul 6 | 7 | + Easy to install 8 | + HTTP APIs 9 | + Design for distributed system 10 | + Flexible health check 11 | + Excellent documentation 12 | 13 | ## Table Of Contents 14 | 15 | - Projects 16 | - [Alerting](#alerting) 17 | - [Authentication and Authorization](#authentication-and-authorization) 18 | - [Backup and Restore](#backup-and-restore) 19 | - [CLI Tools](#cli-tools) 20 | - [Command Execution](#command-execution) 21 | - [Configuration Management](#configuration-management) 22 | - [Monitoring](#monitoring) 23 | - [Other](#other) 24 | - [Packaging](#packaging) 25 | - [Provisioning](#provisioning) 26 | - [Programming Language Clients](#programming-language-clients) 27 | - [Service Discovery](#service-discovery) 28 | - [Errata](#errata) 29 | - Links 30 | - [Articles](#articles) 31 | - [Presentations](#presentations) 32 | 33 | ## Projects 34 | 35 | ### Alerting 36 | 37 | + [consulalerting: Alert groups, teams, individuals by tags and plugins](https://github.com/jrxFive/consulalerting) 38 | + [consul-alerts: Simple daemon to send notifications based on Consul health checks](https://github.com/AcalephStorage/consul-alerts) 39 | 40 | ### Authentication And Authorization 41 | 42 | + [consult: Consul helper tool for quick query based SSH and more](https://github.com/outbrain/consult) 43 | + [ssh-hecate: SSH authorized_keys management via Consul](https://github.com/ncfritz/ssh-hecate) 44 | 45 | ### Backup and Restore 46 | 47 | > *As of Consul 0.7.1, you can use [consul snapshot](https://www.consul.io/docs/commands/snapshot) for some use-cases.* 48 | 49 | + [Consul KV backup](https://github.com/kailunshi/consul-backup) 50 | + [consul-backinator](https://github.com/myENA/consul-backinator) 51 | + [consul-snapshot: A consul backup daemon to S3](https://github.com/pshima/consul-snapshot) 52 | 53 | ### CLI Tools 54 | 55 | + [consul-cli: Command line interface](https://github.com/mantl/consul-cli) 56 | + [consul-bash-completion: Consul Bash Completion library](https://github.com/nzroller/consul-bash-completion) 57 | + [fileconsul: Share files stored in a consul cluster](https://github.com/foostan/fileconsul) 58 | 59 | ### Command Execution 60 | 61 | > *As of Consul 0.5, you can use [consul lock](https://www.consul.io/docs/commands/lock) for many of these tasks.* 62 | 63 | + [cdsh: Distributed SSH](https://github.com/grubernaut/cdsh) 64 | + [consul-do: Do something based on leadership status](https://github.com/zeroXten/consul-do) 65 | + [consul-lock: Runs another program with a Consul session/kv locked.](https://github.com/fujiwara/consul-lock) 66 | + [consul-locker: Enforce that a program runs only on one machine at a time in a datacenter.](https://github.com/fidian/consul-locker) 67 | + [cronsul: Very simple distributed periodic job scheduler](https://github.com/EvanKrall/cronsul) 68 | + [dkron: Distributed, fault tolerant job scheduling system](http://dkron.io/) 69 | + [metronome: Scheduling tool on Consul](https://github.com/cloudconductor/metronome) 70 | + [sifter: Helps to prevent Consul from firing prematurely](https://github.com/darron/sifter) 71 | 72 | ### Configuration Management 73 | 74 | + [confd: Manage local application configuration files using templates and data from etcd or consul](https://github.com/kelseyhightower/confd) 75 | + [consul-template: Generic template rendering and notifications with Consul](https://github.com/hashicorp/consul-template) 76 | + [crypt: Store and retrieve encrypted configs](https://github.com/xordataexchange/crypt) 77 | + [envconsul: Read and set environmental variables for processes from Consul](https://github.com/hashicorp/envconsul) 78 | + [hashi-helper: Disaster Recovery and Configuration Management for Consul and Vault](https://github.com/seatgeek/hashi-helper) 79 | + [hiera-consul: Hiera backend plugin for Consul](https://github.com/lynxman/hiera-consul) 80 | + [kvexpress: Go program to move data in and out of Consul's KV store](https://github.com/DataDog/kvexpress) 81 | + [Consul.conf: responsive web interface for managing configuration of your services in Consul KV store](https://github.com/lukaszlach/consul-conf) 82 | 83 | ### Load Balancing 84 | 85 | + [consul-envoy: Consul to Envoy Bridge](https://github.com/jippi/consul-envoy) 86 | + [fabio: A fast, modern, zero-conf load balancing HTTP(S) router for deploying microservices managed by consul](https://github.com/fabiolb/fabio) 87 | + [Træfɪk: a modern reverse proxy](https://traefik.io/) 88 | + [nginx-upsync-module - Nginx C module, sync upstreams from consul or others](https://github.com/weibocom/nginx-upsync-module) 89 | 90 | ### Monitoring 91 | 92 | + [liaison: A daemon that collects service health information from Consul and converts it to time series data](https://github.com/cruatta/liaison) 93 | 94 | ### Other 95 | 96 | + [consul-topology-visualizer: Visualize latency between your Consul nodes](https://github.com/vmarchaud/consul-topology-visualizer) 97 | + [consulfs: ConsulFS is a FUSE distributed filesystem backed by a Consul Key-Value store](https://github.com/bwester/consulfs) 98 | + [consulmq: Golang library for using consul as a message queue](https://github.com/peterfraedrich/consulmq) 99 | + [git2consul: Mirrors for multiple git repos](https://github.com/breser/git2consul) 100 | + [uwsgi-consul: uWSGI plugin for consul integration](https://github.com/unbit/uwsgi-consul) 101 | 102 | ### Packaging 103 | 104 | + Debian 105 | + [bcandrea/consul-deb](https://github.com/bcandrea/consul-deb) 106 | + RPM 107 | + [tomhillable/consul-rpm](https://github.com/tomhillable/consul-rpm) 108 | 109 | ### Provisioning 110 | 111 | + Ansible 112 | + [griggheo/ansible-consul-template](https://github.com/griggheo/ansible-consul-template) 113 | + [mattupstate/vpc-consul](https://github.com/mattupstate/vpc-consul) 114 | + [mattfinlayson/ansible-consul](https://github.com/mattfinlayson/ansible-consul) 115 | + [sgargan/consul](https://github.com/sgargan/consul) 116 | + Chef 117 | + [adamkrone/chef-consul-template](https://github.com/adamkrone/chef-consul-template) 118 | + [darron/consul-cookbook](https://github.com/darron/consul-cookbook) 119 | + [sous-chefs/consul](https://github.com/sous-chefs/consul) 120 | + Docker 121 | + [hashicorp/docker-consul](https://github.com/hashicorp/docker-consul) 122 | + [foostan/consul-with-docker](https://github.com/foostan/consul-with-docker) 123 | + [gliderlabs/docker-consul](https://github.com/gliderlabs/docker-consul) 124 | + Puppet 125 | + [solarkennedy/puppet-consul](https://github.com/solarkennedy/puppet-consul) 126 | + Salt 127 | + [systembell/salt-consul](https://github.com/systembell/salt-consul) 128 | 129 | ### Programming Language Clients 130 | 131 | + Go 132 | + [armon/consul-api](https://github.com/armon/consul-api) 133 | + [consulstructure: Decode Consul data into Go (Golang) structures and watch for updates](https://github.com/mitchellh/consulstructure) 134 | + Java 135 | + [Ecwid/consul-api](https://github.com/Ecwid/consul-api) 136 | + [rickfast/consul-client]( https://github.com/rickfast/consul-client) 137 | + Node.js 138 | + [gjohnson/consul-node](https://github.com/gjohnson/consul-node) 139 | + [silas/node-consul](https://github.com/silas/node-consul) 140 | + PHP 141 | + [baldurrensch/consul-php](https://github.com/baldurrensch/consul-php) 142 | + [FriendsOfPHP/consul-php-sdk](https://github.com/FriendsOfPHP/consul-php-sdk) 143 | + Python 144 | + [cablehead/python-consul](https://github.com/cablehead/python-consul) 145 | + [gmr/consulate](https://github.com/gmr/consulate) 146 | + [xav-b/pyconsul](https://github.com/xav-b/pyconsul) 147 | + Ruby 148 | + [WeAreFarmGeek/diplomat](https://github.com/WeAreFarmGeek/diplomat) 149 | + [xaviershay/consul-client](https://github.com/xaviershay/consul-client) 150 | + Scala 151 | + [codacy/scala-consul](https://github.com/codacy/scala-consul) 152 | + [getnelson/helm](https://github.com/getnelson/helm) 153 | 154 | ### Service Discovery 155 | 156 | + [connectable: Magic proxy for internal services](https://github.com/gliderlabs/connectable) 157 | + [registrator: Service registry bridge for Docker with pluggable adapters](https://github.com/gliderlabs/registrator) 158 | + [resolvable: Host-level DNS gateway for Docker](https://github.com/gliderlabs/resolvable) 159 | 160 | ## Links 161 | 162 | ### Articles 163 | 164 | + [Consul at Datadog](https://www.datadoghq.com/blog/engineering/consul-at-datadog/ ) - Article by Darron Froese on how Datadog deploys consul in production. 165 | + [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. 166 | + [Securing Consul](https://www.mauras.ch/securing-consul.html) - Article on making your consul setup more secure than the defaults give you. 167 | + [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. 168 | + [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 169 | ### Presentations 170 | 171 | + [Running Consul at Scale—Journey from RFC to Production](https://www.usenix.org/conference/srecon16/program/presentation/froese) (SRECON 2016) 172 | 173 | ### Errata 174 | 175 | #### ZeroRPC 176 | 177 | [consul.d](consul.d) is an example configure file that consul working with ZeroRPC. 178 | 179 | First, start a zerorpc server: 180 | 181 | ``` 182 | $ zerorpc --server --bind tcp://*:8081 time 183 | ``` 184 | 185 | Then, start the consul agent and the web UI: 186 | 187 | ``` 188 | $ bin/consul agent -config-dir ./consul.d 189 | ``` 190 | -------------------------------------------------------------------------------- /consul.d/basic_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "datacenter": "dc1", 3 | "data_dir": "/tmp/consul/", 4 | "log_level": "INFO", 5 | "node_name": "localhost", 6 | "server": true, 7 | "bootstrap_expect": 1, 8 | "advertise_addr": "127.0.0.1", 9 | "bind_addr": "127.0.0.1", 10 | "client_addr": "0.0.0.0", 11 | "ui_dir": "./web/dist" 12 | } 13 | -------------------------------------------------------------------------------- /consul.d/time.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "name": "time", 4 | "tags": ["rpc"], 5 | "port": 8081, 6 | "check": { 7 | "script": "zerorpc --connect tcp://127.0.0.1:8081 --timeout 1 _zerorpc_ping", 8 | "interval": "60s" 9 | } 10 | } 11 | } 12 | --------------------------------------------------------------------------------