locp.cassandra
ansible-roll-cassandra
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/cassandraangewendet, 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 Faktencassandra_memtotal_mbundcassandra_processor_vcpusgesetzt 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 Faktcassandra_memtotal_mbgesetzt ist.cassandra_configuration(Standard: keine): Die Konfiguration für Cassandra. Siehe das Beispiel-Playbook unten.cassandra_configuration_directory(Standard:/etc/cassandra/default.confauf RedHat und/etc/cassandrain Debian): Das Verzeichnis der Cassandra-Konfiguration.cassandra_configuration_file(Standard:/etc/cassandra/default.conf/cassandra.yamlauf RedHat und/etc/cassandra/cassandra.yamlauf 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 incassandra-rackdc.propertiesgesetzt.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_clusterdie 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 Faktencassandra_memtotal_mbundcassandra_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 diecassandra_node_countauf 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 Faktcassandra_memtotal_mb.cassandra_memtotal_mb(Standard:ansible_memtotal_mb, wenn gesetzt): Wird verwendet, umcassandra_cms_max_heapsize_mb,cassandra_max_heapsize_mb,cassandra_cms_heap_new_size_mbundcassandra_heap_new_size_mbzu berechnen.cassandra_pathDiese 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 voncassandra_directories.cassandra_node_count: Eine schreibgeschützte Variable, die versucht, die Anzahl der Knoten im Cluster zu enthalten. Wird nur gesetzt, wenncassandra_join_clusteraufTruegesetzt 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, umcassandra_cms_heap_new_size_mbundcassandra_heap_new_size_mbzu berechnen.cassandra_rack: Wenn definiert, wird der Rack incassandra-rackdc.propertiesgesetzt.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 einenpathbeschreiben, der relativ zumcassandra_configuration_directoryist,regexp, was ein regulärer Ausdruck ist, der in einer Datei gefunden werden soll, undline, 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, wenncassandra_configure_apache_repoauf 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 incassandra_systemd_patherstellt, die aus der Vorlagecassandra_systemd_templategeneriert wird.cassandra_systemd_path(Standard:/usr/lib/systemd/system/cassandra.service): Der Pfad zu einer Unit-Datei für Cassandra. Diese Variable wird ignoriert, wenncassandra_systemd_enabledauf 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, wenncassandra_systemd_enabledauf False gesetzt ist.cassandra_task_delay(Standard: 10): Ansible-Tasks, die von der Netzwerkverbindung abhängen (d.h.apt,apt_key,apt_repository,packageundyum), 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 auchcassandra_task_retries.cassandra_task_retries(Standard: 5): Ansible-Tasks, die von der Netzwerkverbindung abhängen (i.e.apt,apt_key,apt_repository,packageundyum), 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 auchcassandra_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
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
