1it.riak

Ansible Rolle für Riak KV & TS

Build-Status Ansible Galaxy

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.

  1. Installation
  2. Dokumentation
  3. Beispiele
  4. Mitwirken
  5. Fahrplan
  6. Lizenz und Autoren

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

Copyright (c) 2016 Basho Technologies, Inc. Lizenziert unter der Apache-Lizenz, Version 2.0 (die "Lizenz"). Weitere Einzelheiten finden Sie in der Lizenz.

Über das Projekt

Installs and configures Riak KV and TS, a distributed, highly available NoSQL and TimeSeries database.

Installieren
ansible-galaxy install 1it.riak
GitHub Repository
Lizenz
other
Downloads
144
Besitzer
Site Reliability Engineer