confd
confd
is a lightweight configuration management tool focused on:
- keeping local configuration files up-to-date by polling etcd and processing template resources.
- reloading applications to pick up new config file changes
Getting Started
Installing confd
Download the latest binary from Github.
Building
You can build confd from source:
git clone https://github.com/kelseyhightower/confd.git
cd confd
go build
This will produce the confd
binary in the current directory.
Usage
The following commands will process all the template resources found under /etc/confd/conf.d
.
Poll the etcd cluster in 30 second intervals
The "/production" string will be prefixed to keys when querying etcd at http://127.0.0.1:4001.
confd -c /etc/confd -i 30 -p '/production' -n 'http://127.0.0.1:4001'
Single run without polling
Using default settings run one time and exit.
confd -onetime
Client authentication
Same as above but authenticate with client certificates.
confd -onetime -key /etc/confd/ssl/client.key -cert /etc/confd/ssl/client.crt
Configuration
The confd configuration file is written in TOML
and loaded from /etc/confd/confd.toml
by default.
Optional:
confdir
(string) - The path to confd configs. The default is /etc/confd.
etcd_nodes
(array of strings) - An array of etcd cluster nodes. The default
is ["http://127.0.0.1:4001"].
interval
(int) - The number of seconds to wait between calls to etcd. The
default is 600.
prefix
(string) - The prefix string to prefix to keys when making calls to
etcd. The default is "/".
client_cert
(string) The cert file of the client.
client_key
(string) The key file of the client.
Example:
[confd]
confdir = "/etc/confd"
interval = 600
prefix = "/"
etcd_nodes = [
"http://127.0.0.1:4001",
]
client_cert = "/etc/confd/ssl/client.crt"
client_key = "/etc/confd/ssl/client.key"
Template Resources
Template resources are written in TOML and define a single template resource.
Template resources are stored under the confdir/conf.d
directory.
Required:
dest
(string) - output file where the template should be rendered.
keys
(array of strings) - An array of etcd keys. Keys will be looked up
with the configured prefix.
src
(string) - relative path of a Go template. Templates are stored under
the confdir/templates
directory.
Optional:
group
(string) - name of the group that should own the file.
mode
(string) - mode the file should be in.
owner
(string) - name of the user that should own the file.
reload_cmd
(string) - command to reload config.
check_cmd
(string) - command to check config. Use {{ .src }}
to reference
the rendered source template.
Example:
[template]
src = "nginx.conf.tmpl"
dest = "/etc/nginx/nginx.conf"
owner = "root"
group = "root"
mode = "0644"
keys = [
"/nginx/worker_processes",
]
check_cmd = "/usr/sbin/nginx -t -c {{ .src }}"
reload_cmd = "/usr/sbin/service nginx restart"