Skip to content

Commit

Permalink
Add quick start guide
Browse files Browse the repository at this point in the history
  • Loading branch information
kelseyhightower committed Feb 15, 2014
1 parent 20d06be commit 30b3c42
Showing 1 changed file with 86 additions and 0 deletions.
86 changes: 86 additions & 0 deletions docs/quick-start-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Quick Start Guide

Before we begin be sure to [download and install confd](installation.md).

### Add keys to etcd

This guide assumes you have a working [etcd](https://github.com/coreos/etcd#getting-started) server up and running and the ability to add new keys. Using the `etcdctl` command line tool add the following keys and values to etcd:

```
etcdctl set /myapp/database/url db.example.com
etcdctl set /myapp/database/user rob
```

### Create the confdir

The confdir is where template resource configs and source templates are stored. The default confdir is `/etc/confd`. Create the confdir by executing the following command:

```Bash
sudo mkdir -p /etc/confd/{conf.d,templates}
```

You don't have to use the default `confdir` location. For example you can create the confdir under your home directory. Then you tell confd to use the new `confdir` via the `-confdir` flag.

```Bash
mkdir -p ~/confd/{conf.d,templates}
```

### Create a template resource config

Template resources are defined in [TOML](https://github.com/mojombo/toml) config files under the `confdir` (i.e. ~/confd/conf.d/*.toml).

Lets create a simple template resource to manage the `/tmp/myconfig.conf` configuration file.

```toml
[template]
src = "myconfig.conf.tmpl"
dest = "/tmp/myconfig.conf"
keys = [
"/myapp/database/url",
"/myapp/database/user",
]
```

Save the file under the `confdir` directory, i.e. `~/confd/conf.d/myconfig.toml`

### Create the source template

Source templates are plain old [Golang text templates](http://golang.org/pkg/text/template/#pkg-overview), and are stored under the `confdir` templates directory. Create the following source template and save it as `~/confd/templates/myconfig.conf.tmpl`

```
# This a comment
[myconfig]
database_url = {{ .myapp_database_url }}
database_user = {{ .myapp_database_user }}
```
### Processing template resources
confd supports two modes of operation, daemon and onetime mode. In daemon mode, confd runs in the foreground and processing template resources every 5 mins by default. For this tutorial we are going to use onetime mode.
Assuming you etcd server is running at http://127.0.0.1:4001 you can run the following command to process the `~/confd/conf.d/myconfig.toml` template resource:
```
confd -verbose -onetime -node 'http://127.0.0.1:4001' -confdir ~/confd
```
Output:
```
2013-11-03T18:00:47-08:00 confd[21294]: NOTICE Starting confd
2013-11-03T18:00:47-08:00 confd[21294]: NOTICE etcd nodes set to http://127.0.0.1:4001
2013-11-03T18:00:47-08:00 confd[21294]: INFO Target config /tmp/myconfig.conf out of sync
2013-11-03T18:00:47-08:00 confd[21294]: INFO Target config /tmp/myconfig.conf has been updated
```
The `dest` config should now be in sync with the template resource configuration.
```
cat /tmp/myconfig.conf
```
Output:
```
# This a comment
[myconfig]
database_url = db.example.com
database_user = rob
```

0 comments on commit 30b3c42

Please sign in to comment.