cmacrae.consul
Consul
[](https://travis-ci.org/cmacrae/ansible-consul) [Consul](https://consul.io)をデプロイし設定するためのシンプルなAnsibleロールです。特徴
YAMLでConsulを設定
Consulサービスの設定はYAMLからJSONへの変換を使用して行います。以下のようにConsulの設定を表現できます:
consul_master_token: myToken
consul_server: true
consul_configs:
main:
acl_datacenter: pantheon
acl_master_token: "{{ consul_master_token | to_uuid }}"
bootstrap: true
bind_addr: 0.0.0.0
client_addr: 0.0.0.0
datacenter: pantheon
data_dir: "{{ consul_data_dir }}"
log_level: INFO
node_name: master
server: "{{ consul_server }}"
ui: true
これはJinja2フィルタを使用して行われます。このロールには事前設定されたエントリはないので、Consulの設定をJSONで書く代わりにYAMLの同等の構文で表現し、Ansibleの設定のどこにでも置くことができます。
上記の例のように、これは非常に強力であり、Ansibleで利用可能な他のフィルタを活用して任意のデータを構築し、設定に使用できることを意味します。Ansibleのテンプレートを使って表現できるものはどんなものでも、設定で使用可能です(インベントリからデータ/ホスト情報を取得するなど)。
上記の例の設定は単純な文字列のキー/値ペアを示していますが、もちろん辞書やリストなどの有効なタイプをYAMLで定義できます。
ConsulのJSON設定をYAMLで表現する方法が分からない場合は、便利なコンバータはこちらを参照してください。
複数の設定ファイルのデプロイ
上記の例のように、consul_configs
変数にはmain
という辞書があります。おそらく推測した通り、複数の設定の辞書を定義できます。これらは親キーの名前を持つファイルとしてconf.d
ディレクトリにデプロイされます。
KISS
これは本当に機能としてリストするべきか分かりませんが、価値があると思います。
Consulは、行うことに対して信じられないほどシンプルに設定でき、立ち上げも簡単です。そのため、同じくシンプルなAnsibleロールに値すると思います。
メインのタスクファイルは、ホワイトスペースを含めて70行ちょっとです。そして、メインの設定テンプレートは1行です。
このロールをシンプルに保つことで、非常に柔軟で、他のものと統合するのも簡単になります。
Packerプロビジョニングサポート
このロールの非常にシンプルですが便利な機能は、consul_packer_provision
をtrue
(デフォルトはfalse
)に設定できることです。これがtrue
のとき、Ansibleの実行中にConsulサービスは開始されません。この機能は、Packerでマシンイメージを生成するときに使用する値を設定することを可能にします。これに基づいて、後で何らかの起動設定やユーザースクリプト/ユーザーデータによって置き換えることを意図しています。
要件
このロールはUbuntu 16.04でのみテストされていますが、systemd
を実行し、unzip
パッケージが使用可能な任意のLinuxディストリビューションで動作することが期待されます。
デフォルトのロール変数
consul_group_name: consul
consul_group_gid: 3000
consul_user_name: consul
consul_user_uid: 3000
consul_user_home: /opt/consul
consul_config_dir: "{{ consul_user_home }}/conf.d"
consul_data_dir: "{{ consul_user_home }}/data"
consul_version: 0.8.4
consul_server: false
consul_uri: "https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_linux_amd64.zip"
consul_config_src: main.json.j2
consul_service_file:
src: consul.service.j2
dest: /etc/systemd/system/consul.service
consul_config:
datacenter: dc-1
data_dir: "{{ consul_data_dir }}"
log_level: INFO
node_name: node-1
server: "{{ consul_server }}"
例プレイブック
- hosts: consul_servers
vars:
consul_master_token: myToken
consul_server: true
consul_config:
acl_datacenter: pantheon
acl_master_token: "{{ consul_master_token | to_uuid }}"
bootstrap: true
bind_addr: 0.0.0.0
client_addr: 0.0.0.0
datacenter: pantheon
data_dir: "{{ consul_data_dir }}"
log_level: INFO
node_name: master
server: "{{ consul_server }}"
ui: true
roles:
- cmacrae.consul
ライセンス
MIT
著者情報
作成者: Calum MacRae
お気軽にご連絡ください:
- 私に連絡: @calumacrae, [email protected]
- 問題を報告する
- 貢献する
ansible-galaxy install cmacrae.consul