1it.riak
Ansible Rolle für Riak KV & TS
Ansible Riak ist eine Ansible-Rolle, die entwickelt wurde, um Riak KV & TS zu installieren und zu konfigurieren. In Kombination mit Ansible-Hosts kann sie verwendet werden, um einen einzelnen Knoten oder ein komplettes Cluster zu konfigurieren.
Installation
Abhängigkeiten
- Ansible 2.1+
Ansible Galaxy Installation
$ ansible-galaxy install 1it.riak
Dann verweisen Sie in Ihren Playbooks oder anderen Rollen auf die Rolle mit dem Schlüssel 1it.riak
.
Manuelle Installation
Um diese Rolle manuell zu installieren, klonen Sie das Repository oder extrahieren Sie das Verteilungspaket in Ihr Rollenverzeichnis.
Wenn Sie beispielsweise den Standardort für Rollen verwenden, wäre das Rollenverzeichnis ein Verzeichnis neben Ihrer playbook.yml-Datei, also roles/
. Wenn Sie dieses Repository in Ihr Rollenverzeichnis klonen, können Sie die Rolle mit dem Schlüssel ansible-riak
referenzieren.
Dokumentation
Alle Dokumentation für diese Rolle ist in diesem Abschnitt der README enthalten.
Variablen
Alle Variablen, die in dieser Rolle verwendet werden können, finden Sie in der Standardvariablendatei. Um eine der Standardvariablen zu überschreiben, müssen Sie sie einfach im vars:
-Abschnitt Ihrer playbook.yml festlegen oder eine eigene Rolle erstellen, die diese Rolle als Abhängigkeit definiert und dabei die gleichen Variablennamen verwendet.
Vorlagen
Derzeit sind vier Vorlagen in der Rolle enthalten. Die wichtigste ist die Vorlage riak.conf.j2
, da sie die Betriebsparameter für Riak KV konfiguriert. Wenn Sie spezifische Betriebsanforderungen für Ihren Ring haben, die erheblich von der Verteilungskonfiguration abweichen, können Sie diese Vorlage durch Ihre eigene ersetzen.
Es gibt zwei verschiedene Möglichkeiten, die Standardvorlage zu überschreiben:
- Überschreiben Sie die riak_conf_template-Variable und setzen Sie sie auf den absoluten oder relativen Pfad zur Vorlage auf dem lokalen System.
- Erstellen Sie eine neue Rolle, die diese Rolle als Abhängigkeit definiert, und speichern Sie Ihre Vorlagendatei im Vorlagenverzeichnis unter dem exakt gleichen Namen wie die Vorlage, die Sie überschreiben möchten, in diesem Fall
riak.conf.j2
.
Beispiele
Überschreiben von Standardvariablen über Playbook
---
- hosts: riak
sudo: true
roles:
- { role: 1it.riak }
vars:
riak_pb_bind_ip: 10.29.7.192
riak_pb_port: 10017
Überschreiben von Standardvariablen über Rollenabhängigkeit
Intern haben wir ein vagrant-ansible-Paket, das einige von uns verwenden, um unsere Client-Bibliotheken zu testen. Wir haben auch eine Rolle erstellt, die die Umgebung einrichtet, die für unsere Bibliothekstests benötigt wird, und diese Rolle als Abhängigkeit erklärt.
Installation von 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: Setze die Warnschwelle für die Objektgröße
lineinfile: 'dest=/etc/riak/riak.conf line="object.size.warning_threshold = 50K" regexp: "^object.size.warning_threshold ="'
- name: Setze die maximale Schwelle für die Objektgröße
lineinfile: 'dest=/etc/riak/riak.conf line="object.size.maximum = 500K" regexp: "^object.size.maximum ="'
Aufbau eines Clusters
Um ein Cluster aufzubauen, müssen Sie Ihren Riak-Knoten anweisen, dem Cluster beizutreten, indem Sie ihm den Ringführer nennen. Mit dieser Rolle gibt es zwei Möglichkeiten, dies zu tun: über das Befehlsmodul und das CLI-Tool riak-admin oder über das Ansible Riak-Modul.
Befehlsmodul
---
- hosts: riak
sudo: true
roles:
- { role: 1it.riak }
vars:
ring_leader: [email protected]
tasks:
- name: Trete dem Cluster bei
command: '{{ riak_admin }} cluster join {{ ring_leader }}'
- name: Überprüfe den Riak-Ring
command: '{{ riak_admin }} cluster status'
register: riak_ring_status
- name: Plane das Cluster
command: '{{ riak_admin }} cluster plan'
when: riak_ring_status.stdout.find('joining') > 0
- name: Bestätige das Cluster
command: '{{ riak_admin }} cluster commit'
when: riak_ring_status.stdout.find('joining') > 0
Riak-Modul
Das Riak-Modul hat den zusätzlichen Vorteil, die Funktionen wait_for_ring und wait_for_handoffs zu nutzen.
---
- hosts: riak
sudo: true
roles:
- { role: 1it.riak }
vars:
ring_leader: [email protected]
tasks:
- name: Trete dem Cluster bei
riak: command=join target_node={{ ring_leader }}
- name: Überprüfe den Riak-Ring
command: 'riak-admin cluster status'
register: riak_ring_status
- name: Plane das Cluster
riak: command=plan wait_for_ring=300
when: riak_ring_status.stdout.find('joining') > 0
- name: Bestätige das Cluster
riak: command=commit wait_for_handoffs=300
when: riak_ring_status.stdout.find('joining') > 0
Mitwirken
Die Maintainer dieses Repos sind Ingenieure bei Basho und wir begrüßen Ihre Mitwirkung am Projekt! Sie können damit beginnen, CONTRIBUTING.md zu überprüfen, um Informationen zu allem von Tests bis zu Programmierstandards zu erhalten.
Fahrplan
- Derzeit sind keine Pläne vorhanden.
Lizenz und Autoren
- Autor: Bryan Hunt (https://github.com/binarytemple)
- Autor: Christopher Mancini (https://github.com/christophermancini)
Copyright (c) 2016 Basho Technologies, Inc. Lizenziert unter der Apache-Lizenz, Version 2.0 (die "Lizenz"). Weitere Einzelheiten finden Sie in der Lizenz.
Installs and configures Riak KV and TS, a distributed, highly available NoSQL and TimeSeries database.
ansible-galaxy install 1it.riak