Write Consul K/Vs to the filesystem
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test_data
.gitignore
.travis.yml
LICENSE
main.go
readme.md
template_functions.go
watch.go
watch_test.go

readme.md

fsconsul

fsconsul writes data to the filesystem by reading it from Consul's K/V store.

fsconsul allows configuration data to be placed on disk without a consuming application needing to know about the existence of Consul. This makes it especially easy to configure applications throughout all your environments: development, testing, production, etc. On any change, fsconsul will run the provided command, so you can perform any additional actions (restarting your application, for example) necessary.

fsconsul is a port of envconsul which in turn was inspired by envdir in its simplicity, name, and function.

Download & Usage

To install fsconsul, clone this repo into your go workspace and do a go install.

Configuration

fsconsul can be configured entirely by command-line switches, but for more complex cases, you may wish to provide the path to a config JSON file as the -configFile switch. The format of the JSON file is:

{
	"consul" : {
		"addr": "127.0.0.1:8500"
		"dc": "dc1",
		"token" : "my-reader-token"
	},
	"mappings" : [{
		"onchange": "service restart app1",
		"prefix": "/myteam/dev/app1/config/",
		"path": "/etc/app1/",
		"keystore": "/var/lib/encryption_keys"
	},{
		"onchange": "service restart app2",
		"prefix": "/myteam/dev/app2/config/",
		"path": "/etc/app2/",
		"keystore": "/var/app2/encryption_keys"
	}]
}

Run fsconsul to see the usage help:


$ fsconsul
Usage: fsconsul [options] prefix path onchange

  Write files to the specified locations on the local system by reading K/Vs
  from Consul's K/V store with the given prefixes and executing a program on
  any change.  Prefixes and paths must be pipe-delimited if provided as
  command-line switches.

Options:

  -addr="": consul HTTP API address with port
  -configFile="": json file containing all configuration (if this is provided, all other config is ignored)
  -dc="": consul datacenter, uses local if blank
  -keystore="": directory of keys used for decryption
  -once=false: run once and exit
  -token="": token to use for ACL access

CI

Builds are automatically run by Travis on any push or pull request.

Travis Status

Builds

Tagged builds are automatically published to bintray for OS X, Linux, and Windows.

Download