locp.cassandra

rôle-ansible-cassandra

Gitter CI

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 faits cassandra_memtotal_mb et cassandra_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 fait cassandra_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 dans cassandra-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 faits cassandra_memtotal_mb et cassandra_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 que cassandra_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 fait cassandra_memtotal_mb soit défini.

  • cassandra_memtotal_mb (par défaut : ansible_memtotal_mb si défini): Est utilisé pour calculer cassandra_cms_max_heapsize_mb, cassandra_max_heapsize_mb, cassandra_cms_heap_new_size_mb et cassandra_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 de cassandra_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 si cassandra_join_cluster est défini sur True.

  • 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 calculer cassandra_cms_heap_new_size_mb et cassandra_heap_new_size_mb.

  • cassandra_rack: Si défini, cela définira le rack dans cassandra-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 un path qui est relatif à cassandra_configuration_directory, regexp qui est une expression régulière à trouver dans un fichier et line 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 si cassandra_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é dans cassandra_systemd_path créé à partir du modèle cassandra_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 si cassandra_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 si cassandra_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-à-dire apt, apt_key, apt_repository, package et yum) 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 aussi cassandra_task_retries.

  • cassandra_task_retries (par défaut : 5): Les tâches Ansible qui dépendent de la connectivité réseau (c'est-à-dire apt, apt_key, apt_repository, package et yum) 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 aussi cassandra_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

GPLv3

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.

À propos du projet

Ansible role to install Apache Cassandra.

Installer
ansible-galaxy install locp.cassandra
Licence
lgpl-3.0
Téléchargements
22.9k