cmacrae.consul

Consul

Consul

[![Build Status](https://travis-ci.org/cmacrae/ansible-consul.svg?branch=master)](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_provisiontrue(デフォルトは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

お気軽にご連絡ください:

プロジェクトについて

No nonsense role for deploying Consul

インストール
ansible-galaxy install cmacrae.consul
ライセンス
Unknown
ダウンロード
5.1k
所有者