Skip to content

rjocoleman/confd

 
 

Repository files navigation

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"

About

Manage local application configuration files using templates and data from etcd

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%