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/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 Faktencassandra_memtotal_mb
undcassandra_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 Faktcassandra_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 incassandra-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 Faktencassandra_memtotal_mb
undcassandra_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_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 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_mb
undcassandra_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 voncassandra_directories
.cassandra_node_count
: Eine schreibgeschützte Variable, die versucht, die Anzahl der Knoten im Cluster zu enthalten. Wird nur gesetzt, wenncassandra_join_cluster
aufTrue
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, umcassandra_cms_heap_new_size_mb
undcassandra_heap_new_size_mb
zu berechnen.cassandra_rack
: Wenn definiert, wird der Rack incassandra-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 einenpath
beschreiben, der relativ zumcassandra_configuration_directory
ist,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_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 incassandra_systemd_path
erstellt, die aus der Vorlagecassandra_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, wenncassandra_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, wenncassandra_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
undyum
), 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
,package
undyum
), 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