locp.cassandra

ansible-roll-cassandra

Gitter CI

Ansible-Rolle zur Installation und Konfiguration von Apache Cassandra.

Anforderungen

OS-Familienidentifikation

Das Ansible-Playbook muss genügend Informationen sammeln, um die Variable ansible_os_family zu setzen.

Python-Module

Auf Debian-Systemen, die cassandra_configure_apache_repo auf True setzen, beachten Sie bitte, dass das apt_repository Modul verwendet wird. Daher sind die folgenden Anforderungen auf dem Host, der dieses Modul ausführt, erforderlich.

  • python-apt (python 2)
  • python3-apt (python 3)

Rollenvariablen

  • cassandra_15770_workaround: (Standard: False) CASSANDRA-15770 betraf Debian 10 und Ubuntu 20.04 und wurde in den Versionen 3.0.21, 3.11.7, 4.0 behoben. Da wir derzeit unsere Tests mit 3.11.6 ausführen, wird dieser Fix auf /etc/init.d/cassandra angewendet, wenn er auf True gesetzt ist.

  • cassandra_2356_workaround: (Standard: False) CASSANDRA-2356 betraf Debian-Pakete für Cassandra-Versionen vor 4.0.

  • cassandra_cms_heap_new_size_mb: Ein benutzerdefinierter Fakt, der einen Wert (MB) zurückgibt, der geeignet sein könnte, um HEAP_NEWSIZE beim Einsatz des Concurrent Mark Sweep (CMS) Collectors festzulegen. Weitere Informationen finden Sie unter Java-Ressourcen optimieren. Erfordert, dass die Fakten cassandra_memtotal_mb und cassandra_processor_vcpus gesetzt sind.

  • cassandra_cms_max_heapsize_mb: Ein benutzerdefinierter Fakt, der einen Wert (MB) zurückgibt, der geeignet sein könnte, um MAX_HEAP_SIZE beim Einsatz des Concurrent Mark Sweep (CMS) Collectors festzulegen. Weitere Informationen finden Sie unter Java-Ressourcen optimieren. Erfordert, dass der Fakt cassandra_memtotal_mb gesetzt ist.

  • cassandra_configuration (Standard: keine): Die Konfiguration für Cassandra. Siehe das Beispiel-Playbook unten.

  • cassandra_configuration_directory (Standard: /etc/cassandra/default.conf auf RedHat und /etc/cassandra in Debian): Das Verzeichnis der Cassandra-Konfiguration.

  • cassandra_configuration_file (Standard: /etc/cassandra/default.conf/cassandra.yaml auf RedHat und /etc/cassandra/cassandra.yaml auf Debian): Der Speicherort der Cassandra-Konfigurationsdatei.

  • cassandra_configuration_templ (Standard: cassandra.yaml.j2): Name der Vorlage für die Cassandra-Konfiguration.

  • cassandra_configure_apache_repo (Standard: False): Ob das Apache Cassandra-Repository konfiguriert werden soll.

    SIEHE AUCH: cassandra_repo_apache_release.

  • cassandra_dc: Wenn definiert, wird der Datacenter in cassandra-rackdc.properties gesetzt.

    Diese Option ist veraltet und wird in einer zukünftigen Version entfernt. Bitte verwenden Sie stattdessen cassandra_regex_replacements.

  • cassandra_directories: Wenn definiert, werden nach der Installation des Pakets Verzeichnisse erstellt (wenn der Benutzer cassandra verfügbar ist), aber bevor Cassandra konfiguriert wird. Siehe das Beispiel-Playbook für weitere Details.

    Bitte beachten Sie, dass bei Verwendung mit der Option cassandra_join_cluster die hier angegebenen Pfade gelöscht (mit allen Inhalten) und neu erstellt werden, damit der Knoten korrekt einem Cluster beitreten kann.

  • cassandra_heap_new_size_mb: Ein benutzerdefinierter Fakt, der einen Wert (MB) zurückgibt, der geeignet sein könnte, um HEAP_NEWSIZE festzulegen. Weitere Informationen finden Sie unter Java-Ressourcen optimieren. Erfordert die Fakten cassandra_memtotal_mb und cassandra_processor_vcpus.

  • cassandra_install_packages (Standard: True): Ein boolescher Wert, der angibt, ob diese Ansible-Rolle versuchen soll, Pakete zu installieren oder nicht. Wenn auf False gesetzt, ermöglicht es einem Benutzer, diese Rolle zu verwenden, um Cassandra zu konfigurieren, versucht jedoch nicht, es zu installieren (z.B. wenn es aus dem Quellcode installiert wurde).

  • cassandra_join_cluster (Standard: False): Dies ist eine experimentelle Funktion, die mit äußerster Vorsicht verwendet werden sollte! Wenn auf true gesetzt und die cassandra_node_count auf einem Knoten auf 1 gefunden wird, werden die folgenden Aktionen auf diesem Knoten durchgeführt, bevor der Knoten konfiguriert wird:

    • Cassandra wird gestoppt
    • Das/die Cassandra-Datenverzeichnis/se wird von allen Daten bereinigt.

    Nachdem dies geschehen ist, wird der Knoten neu konfiguriert und tritt einem Cluster bei (das größer sein sollte als ein Knoten).

  • cassandra_max_heapsize_mb: Ein benutzerdefinierter Fakt, der einen Wert (MB) zurückgibt, der geeignet sein könnte, um MAX_HEAP_SIZE festzulegen. Weitere Informationen finden Sie unter Java-Ressourcen optimieren. Erfordert den Fakt cassandra_memtotal_mb.

  • cassandra_memtotal_mb (Standard: ansible_memtotal_mb, wenn gesetzt): Wird verwendet, um cassandra_cms_max_heapsize_mb, cassandra_max_heapsize_mb, cassandra_cms_heap_new_size_mb und cassandra_heap_new_size_mb zu berechnen.

  • cassandra_path Diese Variable wurde in Version 1.4.0 eingeführt, aber nicht dokumentiert. Wie angemerkt wird die Variable nicht neu erstellt, wenn sie definiert und das Verzeichnis gelöscht wird. Die Variable ist jetzt veraltet zugunsten von cassandra_directories.

  • cassandra_node_count: Eine schreibgeschützte Variable, die versucht, die Anzahl der Knoten im Cluster zu enthalten. Wird nur gesetzt, wenn cassandra_join_cluster auf True gesetzt ist.

  • cassandra_package (Standard: cassandra): Der Name des Pakets, das installiert werden soll, um Cassandra bereitzustellen.

  • cassandra_processor_vcpus (Standard: ansible_processor_vcpus, wenn gesetzt): Wird verwendet, um cassandra_cms_heap_new_size_mb und cassandra_heap_new_size_mb zu berechnen.

  • cassandra_rack: Wenn definiert, wird der Rack in cassandra-rackdc.properties gesetzt.

    Diese Option ist veraltet und wird in einer zukünftigen Version entfernt. Bitte verwenden Sie stattdessen cassandra_regex_replacements.

  • cassandra_regex_replacements (Standard: []): Eine Liste von Hashes, die einen path beschreiben, der relativ zum cassandra_configuration_directory ist, regexp, was ein regulärer Ausdruck ist, der in einer Datei gefunden werden soll, und line, die den Ersetzungswert innerhalb der Datei ist. Siehe das Beispiel-Playbook für weitere Details.

  • cassandra_repo_apache_release (Standard: Keine): Der Name der Release-Serie (kann einer von 40x, 311x oder 30x sein). Dies muss gesetzt werden, wenn cassandra_configure_apache_repo auf True gesetzt ist.

  • cassandra_service_enabled (Standard: ja): Soll der Cassandra-Dienst aktiviert werden (kann ja oder nein sein).

  • cassandra_service_restart (Standard: True): Wenn auf true gesetzt, garantieren Änderungen an der Cassandra-Konfigurationsdatei oder den Datenverzeichnissen, dass der Cassandra-Dienst nach den Änderungen aktualisiert wird. Wenn dieses Flag auf false gesetzt ist, wird dieses Verhalten deaktiviert, sodass Änderungen vorgenommen werden können, aber der Benutzer steuern kann, wann der Dienst neu gestartet wird.

  • cassandra_systemd_enabled (Standard: False): Soll der Cassandra-Dienst über systemd aktiviert werden? Wenn auf True gesetzt, wird eine Unit-Datei in cassandra_systemd_path erstellt, die aus der Vorlage cassandra_systemd_template generiert wird.

  • cassandra_systemd_path (Standard: /usr/lib/systemd/system/cassandra.service): Der Pfad zu einer Unit-Datei für Cassandra. Diese Variable wird ignoriert, wenn cassandra_systemd_enabled auf False gesetzt ist.

  • cassandra_systemd_template (Standard: "systemd/system/cassandra.service.j2"): Der Pfad zu einer Vorlage, aus der eine Unit-Datei für Cassandra erstellt werden soll. Diese Variable wird ignoriert, wenn cassandra_systemd_enabled auf False gesetzt ist.

  • cassandra_task_delay (Standard: 10): Ansible-Tasks, die von der Netzwerkverbindung abhängen (d.h. apt, apt_key, apt_repository, package und yum), können von hoher Latenz betroffen sein, daher sind diese Tasks so konfiguriert, dass sie wiederholt werden. Dieses Parameter gibt an, wie lange zwischen den Versuchen gewartet werden soll. Siehe auch cassandra_task_retries.

  • cassandra_task_retries (Standard: 5): Ansible-Tasks, die von der Netzwerkverbindung abhängen (i.e. apt, apt_key, apt_repository, package und yum), können von hoher Latenz betroffen sein, daher sind diese Tasks so konfiguriert, dass sie wiederholt werden. Dieses Parameter gibt an, wie viele Versuche unternommen werden sollen. Siehe auch cassandra_task_delay.

Beispiel-Playbook

Dieses Playbook sollte ausreichen, um Cassandra mit einer sehr einfachen Konfiguration zu konfigurieren:

---
- name: Beispiel-Playbook für die locp.cassandra-Rolle

  hosts: cassandra

  remote_user: root

  vars:
    cassandra_configuration:
      authenticator: PasswordAuthenticator
      cluster_name: MyCassandraCluster
      commitlog_directory: /data/cassandra/commitlog
      commitlog_sync: periodic
      commitlog_sync_period_in_ms: 10000
      data_file_directories:
        - /data/cassandra/data
      endpoint_snitch: GossipingPropertyFileSnitch
      hints_directory: "/data/cassandra/hints"
      listen_address: "{{ ansible_default_ipv4.address }}"
      num_tokens: 4
      partitioner: org.apache.cassandra.dht.Murmur3Partitioner
      saved_caches_directory: /data/cassandra/saved_caches
      seed_provider:
        - class_name: "org.apache.cassandra.locator.SimpleSeedProvider"
          parameters:
            - seeds: "{{ hostvars[groups['cassandra'][0]]['ansible_default_ipv4'].address }}"
      start_native_transport: true
    cassandra_configure_apache_repo: true
    cassandra_directories:
      root:
        group: root
        mode: "0755"
        owner: root
        paths:
          - /data
      data:
        paths:
          - /data/cassandra
          - /data/cassandra/commitlog
          - /data/cassandra/data
          - /data/cassandra/hints
          - /data/cassandra/saved_caches
    cassandra_regex_replacements:
      - path: cassandra-env.sh
        line: 'MAX_HEAP_SIZE="{{ cassandra_max_heapsize_mb }}M"'
        regexp: '^#MAX_HEAP_SIZE="4G"'
      - path: cassandra-env.sh
        line: 'HEAP_NEWSIZE="{{ cassandra_heap_new_size_mb }}M"'
        regexp: '^#HEAP_NEWSIZE="800M"'
      - path: cassandra-rackdc.properties
        line: 'dc=DC1'
        regexp: '^dc='
      - path: cassandra-rackdc.properties
        line: 'rack=RACK1'
        regexp: '^rack='
    cassandra_repo_apache_release: 40x

  roles:
    - role: locp.cassandra

Um die Playbooks zu sehen, die für Tests verwendet werden, siehe molecule/default/converge.yml und molecule/combine_cluster/converge.yml.

Lizenz

GPLv3

Autor-Information

Entwickelt von der League of Crafty Programmers Ltd.

Um Probleme zu melden oder Beiträge zu leisten, besuchen Sie bitte https://github.com/locp/ansible-role-cassandra/issues

Über das Projekt

Ansible role to install Apache Cassandra.

Installieren
ansible-galaxy install locp.cassandra
Lizenz
lgpl-3.0
Downloads
22.9k