locp.cassandra
rôle-ansible-cassandra
Rôle Ansible pour installer et configurer Apache Cassandra.
Exigences
Identification de la famille OS
Le playbook Ansible doit rassembler suffisamment de faits pour que la variable ansible_os_family
soit définie.
Modules Python
Sur les systèmes Debian qui définissent cassandra_configure_apache_repo
sur True, veuillez noter que le module apt_repository
est utilisé. Par conséquent, les exigences suivantes sont nécessaires sur l'hôte qui exécute ce module :
- python-apt (python 2)
- python3-apt (python 3)
Variables du Rôle
cassandra_15770_workaround
: (par défaut : False) CASSANDRA-15770 a affecté Debian 10 et Ubuntu 20.04 et a été corrigé dans les versions 3.0.21, 3.11.7, 4.0. Comme nous exécutons nos tests avec la version 3.11.6 pour le moment, cela applique le correctif à/etc/init.d/cassandra
si défini sur True.cassandra_2356_workaround
: (par défaut : False) CASSANDRA-2356 a affecté les paquets Debian pour les versions de Cassandra avant 4.0.cassandra_cms_heap_new_size_mb
: Un fait personnalisé qui retourne une valeur (Mo) qui pourrait être appropriée pour définir le HEAP_NEWSIZE lors de l'utilisation du collecte Concurrent Mark Sweep (CMS). Voir Réglage des ressources Java pour plus de détails. Nécessite que les faitscassandra_memtotal_mb
etcassandra_processor_vcpus
soient définis.cassandra_cms_max_heapsize_mb
: Un fait personnalisé qui retourne une valeur (Mo) qui pourrait être appropriée pour définir le MAX_HEAP_SIZE lors de l'utilisation du collecte Concurrent Mark Sweep (CMS). Voir Réglage des ressources Java pour plus de détails. Nécessite que le faitcassandra_memtotal_mb
soit défini.cassandra_configuration
(par défaut : aucun): La configuration pour Cassandra. Voir l'exemple de playbook ci-dessous.cassandra_configuration_directory
(par défaut :/etc/cassandra/default.conf
sur RedHat et/etc/cassandra
sous Debian): Le répertoire de la configuration de Cassandra.cassandra_configuration_file
(par défaut :/etc/cassandra/default.conf/cassandra.yaml
sur RedHat et/etc/cassandra/cassandra.yaml
sous Debian): L'emplacement du fichier de configuration de Cassandra.cassandra_configuration_templ
(par défaut :cassandra.yaml.j2
): Nom du fichier de modèle pour la configuration de Cassandra.cassandra_configure_apache_repo
(par défaut : False): Indique si le dépôt Apache Cassandra doit être configuré.VOIR ÉGALEMENT :
cassandra_repo_apache_release
.cassandra_dc
: Si défini, cela définira le Datacenter danscassandra-rackdc.properties
.Cette option est dépréciée et sera supprimée dans une future version. Veuillez utiliser
cassandra_regex_replacements
à la place.cassandra_directories
: Si défini, cela créera des répertoires après l'installation du paquet (quand l'utilisateur cassandra est disponible) mais avant que Cassandra soit configuré. Voir l'exemple de playbook pour plus de détails.Veuillez noter que lorsqu'il est utilisé avec l'option
cassandra_join_cluster
, les chemins spécifiés ici seront supprimés (avec tout leur contenu) et recréés afin que le nœud puisse rejoindre correctement un cluster.cassandra_heap_new_size_mb
: Un fait personnalisé qui retourne une valeur (Mo) qui pourrait être appropriée pour définir le HEAP_NEWSIZE. Voir Réglage des ressources Java pour plus de détails. Nécessite que les faitscassandra_memtotal_mb
etcassandra_processor_vcpus
soient définis.cassandra_install_packages
(par défaut : True): Une valeur booléenne indiquant si ce rôle Ansible doit tenter d'installer des paquets ou non. Si défini sur False, cela permet à un utilisateur d'utiliser ce rôle pour configurer Cassandra sans tenter de l'installer (par exemple, s'ils l'ont installé à partir du code source).cassandra_join_cluster
(par défaut : False): C'est une fonctionnalité expérimentale, à utiliser avec une extrême prudence ! Si défini sur vrai et quecassandra_node_count
est trouvé égal à 1 sur un nœud, les actions suivantes auront lieu sur ce nœud avant sa configuration :- Cassandra sera arrêté.
- Le répertoire/dossiers de données Cassandra seront vidés de toutes les données.
Lorsque cela a été fait, le nœud sera reconfiguré et rejoindra un cluster (qui devrait être plus grand qu'un seul nœud).
cassandra_max_heapsize_mb
: Un fait personnalisé qui retourne une valeur (Mo) qui pourrait être appropriée pour définir le MAX_HEAP_SIZE. Voir Réglage des ressources Java pour plus de détails. Nécessite que le faitcassandra_memtotal_mb
soit défini.cassandra_memtotal_mb
(par défaut :ansible_memtotal_mb
si défini): Est utilisé pour calculercassandra_cms_max_heapsize_mb
,cassandra_max_heapsize_mb
,cassandra_cms_heap_new_size_mb
etcassandra_heap_new_size_mb
.cassandra_path
Cette variable a été introduite dans la version 1.4.0 mais n'a pas été documentée. Comme l'a signalé, si la variable est définie et que le répertoire est supprimé, il n'est pas recréé. Cette variable a maintenant été dépréciée en faveur decassandra_directories
.cassandra_node_count
: Une variable en lecture seule qui tente de contenir le nombre de nœuds dans le cluster. Sera seulement définie sicassandra_join_cluster
est défini surTrue
.cassandra_package
(par défaut :cassandra
): Le nom du paquet à installer pour fournir Cassandra.cassandra_processor_vcpus
(par défaut :ansible_processor_vcpus
si défini): Est utilisé pour calculercassandra_cms_heap_new_size_mb
etcassandra_heap_new_size_mb
.cassandra_rack
: Si défini, cela définira le rack danscassandra-rackdc.properties
.Cette option est dépréciée et sera supprimée dans une future version. Veuillez utiliser
cassandra_regex_replacements
à la place.cassandra_regex_replacements
(par défaut : []): Une liste de hachages décrivant unpath
qui est relatif àcassandra_configuration_directory
,regexp
qui est une expression régulière à trouver dans un fichier etline
est le remplacement dans le fichier. Voir l'exemple de playbook pour plus de détails.cassandra_repo_apache_release
(par défaut : Aucun): Le nom de la série de version (peut être l'un des 40x, 311x, ou 30x). Ceci doit être défini sicassandra_configure_apache_repo
est défini sur True.cassandra_service_enabled
(par défaut : oui): Le service Cassandra doit-il être activé (peut être oui ou non).cassandra_service_restart
(par défaut : True): Si défini sur vrai, les modifications apportées au fichier de configuration de Cassandra ou aux répertoires de données garantiront que le service Cassandra sera actualisé après les changements. Mettre ce drapeau sur faux désactivera ce comportement, permettant ainsi aux modifications d'être effectuées, mais laissant l'utilisateur contrôler quand le service est redémarré.cassandra_systemd_enabled
(par défaut : False): Le service Cassandra doit-il être activé via systemd ? S'il est défini sur True, un fichier d'unité sera placé danscassandra_systemd_path
créé à partir du modèlecassandra_systemd_template
.cassandra_systemd_path
(par défaut :/usr/lib/systemd/system/cassandra.service
): Le chemin vers un fichier d'unité pour Cassandra. Cette variable est ignorée sicassandra_systemd_enabled
est False.cassandra_systemd_template
(par défaut :"systemd/system/cassandra.service.j2"
): Le chemin pour un modèle à partir duquel créer le fichier d'unité pour Cassandra. Cette variable est ignorée sicassandra_systemd_enabled
est False.cassandra_task_delay
(par défaut : 10): Les tâches Ansible qui dépendent de la connectivité réseau (c'est-à-direapt
,apt_key
,apt_repository
,package
etyum
) peuvent être affectées par une forte latence, donc ces tâches sont configurées pour réessayer. Ce paramètre définit combien de temps attendre entre les tentatives. Voir aussicassandra_task_retries
.cassandra_task_retries
(par défaut : 5): Les tâches Ansible qui dépendent de la connectivité réseau (c'est-à-direapt
,apt_key
,apt_repository
,package
etyum
) peuvent être affectées par une forte latence, donc ces tâches sont configurées pour réessayer. Ce paramètre définit combien de tentatives doivent être faites. Voir aussicassandra_task_delay
.
Exemple de Playbook
Ce playbook devrait suffire à configurer Cassandra avec une configuration très basique configuration :
---
- name: Playbook d'exemple pour le rôle locp.cassandra
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
Pour voir les playbooks utilisés pour tester, consultez molecule/default/converge.yml et molecule/combine_cluster/converge.yml.
Licence
Informations sur l'Auteur
Développé par la League of Crafty Programmers Ltd.
Pour soulever des problèmes ou faire des contributions, veuillez aller sur https://github.com/locp/ansible-role-cassandra/issues.
Ansible role to install Apache Cassandra.
ansible-galaxy install locp.cassandra