1it.riak
Riak KV & TS用のAnsibleロール
Ansible Riakは、Riak KV & TSをインストールおよび構成するために設計されたAnsibleロールです。Ansibleホストと組み合わせることで、単一ノードまたはクラスター全体を構成できます。
インストール
依存関係
- Ansible 2.1以上
Ansible Galaxyによるインストール
$ ansible-galaxy install 1it.riak
次に、プレイブックや他のロールでキー1it.riak
を使ってこのロールを参照します。
手動インストール
このロールを手動でインストールするには、リポジトリをクローンするか、配布パッケージをロールディレクトリに抽出します。
たとえば、ロールのデフォルトの場所を使用する場合、ロールディレクトリはplaybook.yml
ファイルの隣にroles/
になります。このリポジトリをロールディレクトリにクローンした場合、キーansible-riak
を使ってこのロールを参照できます。
ドキュメント
このロールに関するすべてのドキュメントは、READMEのこのセクションに含まれています。
変数
このロールで使用できるすべての変数は、デフォルトの変数ファイルにあります。デフォルトの変数を上書きするには、playbook.yml
のvars:
セクションで設定するか、同じ変数名を使ってこのロールを依存関係として定義した独自のロールを作成します。
テンプレート
現在、このロールには4つのテンプレートが含まれています。最も重要なのはriak.conf.j2
テンプレートです。これはRiak KVの動作パラメータを設定します。配布構成と大きく異なる運用要件がある場合は、このテンプレートを自分のものに上書きできます。
デフォルトのテンプレートを上書きする方法は2つあります:
- riak_conf_template変数を上書きし、ローカルシステムのテンプレートへの絶対/相対パスを設定します。
- このロールを依存関係として定義する新しいロールを作成し、上書きしたいテンプレートと同じ名前のテンプレートファイルをテンプレートディレクトリに保存します。この場合は
riak.conf.j2
です。
例
プレイブックによるデフォルト変数の上書き
---
- hosts: riak
sudo: true
roles:
- { role: 1it.riak }
vars:
riak_pb_bind_ip: 10.29.7.192
riak_pb_port: 10017
ロール依存によるデフォルト変数の上書き
私たちは、クライアントライブラリをテストするために一部で使用しているvagrant-ansibleパッケージをinternallyに持っています。また、ライブラリテストに必要な環境を設定し、このロールを依存関係として宣言するロールも作成しました。
Riak TSのインストール
---
- hosts: riakts
sudo: true
roles:
- { role: 1it.riak }
vars:
riak_package: 'riak-ts'
riak_backend: leveldb
riak_node_name: "riak@{{ ansible_default_ipv4['address'] }}"
riak_shell_group: 'riak-ts'
riak_anti_entropy: off
tasks:
- name: オブジェクトサイズの警告閾値を設定
lineinfile: 'dest=/etc/riak/riak.conf line="object.size.warning_threshold = 50K" regexp: "^object.size.warning_threshold ="'
- name: オブジェクトサイズの最大閾値を設定
lineinfile: 'dest=/etc/riak/riak.conf line="object.size.maximum = 500K" regexp: "^object.size.maximum ="'
クラスターの構築
クラスターを構築するには、Riakノードにクラスターに参加するよう指示する必要があります。この役割を使用すると、2つの方法でこれが行えます。 commandモジュール経由またはcliツールriak-adminを使う方法、またはAnsible Riakモジュールを使う方法です。
コマンドモジュール
---
- hosts: riak
sudo: true
roles:
- { role: 1it.riak }
vars:
ring_leader: [email protected]
tasks:
- name: クラスターに参加
command: '{{ riak_admin }} cluster join {{ ring_leader }}'
- name: Riakリングを確認
command: '{{ riak_admin }} cluster status'
register: riak_ring_status
- name: クラスターの計画
command: '{{ riak_admin }} cluster plan'
when: riak_ring_status.stdout.find('joining') > 0
- name: クラスターの確定
command: '{{ riak_admin }} cluster commit'
when: riak_ring_status.stdout.find('joining') > 0
Riakモジュール
Riakモジュールには、wait_for_ringおよびwait_for_handoffs機能を使用できる追加の利点があります。
---
- hosts: riak
sudo: true
roles:
- { role: 1it.riak }
vars:
ring_leader: [email protected]
tasks:
- name: クラスターに参加
riak: command=join target_node={{ ring_leader }}
- name: Riakリングを確認
command: 'riak-admin cluster status'
register: riak_ring_status
- name: クラスターの計画
riak: command=plan wait_for_ring=300
when: riak_ring_status.stdout.find('joining') > 0
- name: クラスターの確定
riak: command=commit wait_for_handoffs=300
when: riak_ring_status.stdout.find('joining') > 0
貢献
このリポジトリのメンテナはBashoのエンジニアであり、プロジェクトへの貢献を歓迎します!テストからコーディングスタンダードまでの詳細については、CONTRIBUTING.mdを確認してください。
ロードマップ
- 現在のところ、予定はありません。
ライセンスと著者
- 著者:Bryan Hunt (https://github.com/binarytemple)
- 著者:Christopher Mancini (https://github.com/christophermancini)
Copyright (c) 2016 Basho Technologies, Inc. Apache License, Version 2.0(「ライセンス」)の下でライセンスされています。詳細については、ライセンスを参照してください。
Installs and configures Riak KV and TS, a distributed, highly available NoSQL and TimeSeries database.
ansible-galaxy install 1it.riak