LoginSignup
6
6

More than 5 years have passed since last update.

envconsulのビルド方法と動作確認

Posted at

概要

現時点で envconsul バイナリは配付されておらず、動作の確認を行うには、Go 言語のコードを取得し、ビルドする必要があります。以下、ビルドし、簡単にテストするまでの手順をまとめます。

envconsul とは?

envconsul は、環境変数の取得・設定を行うためのツールです。 Consul のキーバリュー・ストア( 以下 KVS )と連携し、リモートの KVS 上のデータを参照したり、データの変更をトリガに任意のコマンドを実行する事ができます。envconsul の開発を行っているのは、Vagrant や Serf、Consul を提供している Hashicorp 社です。

事前準備

予め、各 OS 環境において、Go 言語の開発環境が必要です。
次に、Consul と連携する必要があるので、Consul のセットアップと、HTTP インターフェースを有効化する必要があります(デフォルトで、Port 8500 が利用出来ます)。

envconsul のビルド

README 等には特に書かれていませんが、consul-kv も別途必要になります(先に envconsul をビルドしようとしても、エラー 「watch.go:13:2: cannot find package "github.com/armon/consul-kv」が表示されてしまいます)。
また、作業にあたり、環境変数が export GOPATH="$HOME/go" と指定されているものとして、以下進めます。

作業用のディレクトリを作成します。

$ mkdir -p ~/go/src/github.com/armon
$ cd ~/go/src/github.com/armon
$ git clone git@github.com:armon/consul-kv.git

これで、consul-kv のコードが展開されます。

次に envconsul のコードを取得します。以降の作業場所は、どこでも構いません。

$ cd ~/src/
$ git clone git@github.com:hashicorp/envconsul.git
$ cd envconsul
$ go build

ビルドが終わると、作業ディレクトリ内に envconsul のバイナリが作成されます。

実行すると、次のようにヘルプが表示されます。

$ ./envconsul
Usage: envconsul [options] prefix child...

  Sets environmental variables for the child process by reading
  K/V from Consul's K/V store with the given prefix.

Options:

  -addr="127.0.0.1:8500": consul HTTP API address with port
  -dc="": consul datacenter, uses local if blank
  -errexit=false: exit if there is an error watching config keys
  -reload=false: if set, restarts the process when config changes
  -sanitize=true: turn invalid characters in the key into underscores
  -upcase=true: make all environmental variable keys uppercase

動作テスト

envconsul の書式は、次の通りです。

$ envconsul -addr="ホスト名:ポート番号" prefix名 実行コマンド

prefix名 とは、Consul の KVS 上の キー名 の事です。また、オプションで -reload で、KVS の対象キーの値が変更したタイミングで、指定した実行コマンドに新しい環境変数を引き渡します。

Prefix に当たるデータは、Consul の WebUI から作成します。http://ホスト:8500/ にアクセスすると、UI が表示されます。上のメニューの Key/Value を押して、画面を切り替えます。

次に、'Create Key' でtest/enabled、値をfalseとして、createを押します。これは、prefix test の、キー(環境変数) enabled に対する値が true であるという指定です。

このデータを envconsul で参照するには、次のようにします。

$ envconsul -addr="sakura1.pocketstudio.net:8500" test env | grep ENABLED
ENABLED=true

このあとは、WebUI で値を変えると、その情報が反映することが確認できます。

次は、-reload を試します。以下のコマンドを実行した後、再び WebUI で値を操作すると、そのタイミングでコマンドが実行できます。

$ envconsul -addr="sakura1.pocketstudio.net:8500" -reload test /bin/sh -c "
uptime; /bin/sleep 1d"
 22:15:51 up 90 days,  2:15,  1 user,  load average: 0.36, 0.52, 0.49
 22:15:58 up 90 days,  2:15,  1 user,  load average: 0.31, 0.50, 0.49
 22:16:01 up 90 days,  2:15,  1 user,  load average: 0.31, 0.50, 0.49

この例では uptime を実行しましたが、任意のプログラムを実行させることができます。また、環境変数の値も、reload 時には、常に最新のものを引き渡せすことが可能です。

参考

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6