locp.cassandra

rol-ansible-cassandra

Gitter CI

Rol de Ansible para instalar y configurar Apache Cassandra.

Requisitos

Identificación de la Familia del SO

El playbook de Ansible debe recopilar suficientes datos para que se establezca la variable ansible_os_family.

Módulos de Python

En sistemas Debian que configuren cassandra_configure_apache_repo como True, tenga en cuenta que se utiliza el módulo apt_repository. Por lo tanto, se necesitan los siguientes requisitos en el host que ejecuta este módulo:

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

Variables del Rol

  • cassandra_15770_workaround: (predeterminado: False) CASSANDRA-15770 afectó a Debian 10 y Ubuntu 20.04, que se corrigió posteriormente en las versiones 3.0.21, 3.11.7, 4.0. Dado que estamos ejecutando nuestras pruebas contra 3.11.6 en este momento, esto aplica la corrección a /etc/init.d/cassandra si se establece en True.

  • cassandra_2356_workaround: (predeterminado: False) CASSANDRA-2356 afectó a los paquetes deb para versiones de Cassandra anteriores a 4.0.

  • cassandra_cms_heap_new_size_mb: Un hecho personalizado que devuelve un valor (MB) que puede ser adecuado para establecer el HEAP_NEWSIZE al usar el recolector Concurrent Mark Sweep (CMS). Vea Ajuste de recursos de Java para más detalles. Requiere que se establezcan los hechos cassandra_memtotal_mb y cassandra_processor_vcpus.

  • cassandra_cms_max_heapsize_mb: Un hecho personalizado que devuelve un valor (MB) que puede ser adecuado para establecer el MAX_HEAP_SIZE al usar el recolector Concurrent Mark Sweep (CMS). Vea Ajuste de recursos de Java para más detalles. Requiere que se establezca el hecho cassandra_memtotal_mb.

  • cassandra_configuration (predeterminado: ninguno): La configuración para Cassandra. Vea el ejemplo de playbook a continuación.

  • cassandra_configuration_directory (predeterminado: /etc/cassandra/default.conf en RedHat y /etc/cassandra en Debian): El directorio de configuración de Cassandra.

  • cassandra_configuration_file (predeterminado: /etc/cassandra/default.conf/cassandra.yaml en RedHat y /etc/cassandra/cassandra.yaml en Debian): La ubicación del archivo de configuración de Cassandra.

  • cassandra_configuration_templ (predeterminado: cassandra.yaml.j2): Nombre del archivo de plantilla para la configuración de Cassandra.

  • cassandra_configure_apache_repo (predeterminado: False): Si se debe configurar el repositorio de Apache Cassandra.

    VER TAMBIÉN: cassandra_repo_apache_release.

  • cassandra_dc: Si está definido, establecerá el Datacenter en cassandra-rackdc.properties.

    Esta opción está obsoleta y será eliminada en una futura versión. Utilice cassandra_regex_replacements en su lugar.

  • cassandra_directories: Si está definido, esto creará directorios después de que se haya instalado el paquete (por lo tanto, cuando el usuario de cassandra esté disponible) pero antes de que se configure Cassandra. Vea el ejemplo de playbook para más detalles.

    Tenga en cuenta que cuando se usa con la opción cassandra_join_cluster, las rutas especificadas aquí se eliminarán (con todos sus contenidos) y se volverán a crear para que el nodo pueda unirse a un clúster correctamente.

  • cassandra_heap_new_size_mb: Un hecho personalizado que devuelve un valor (MB) que puede ser adecuado para establecer el HEAP_NEWSIZE. Vea Ajuste de recursos de Java para más detalles. Requiere que se establezcan los hechos cassandra_memtotal_mb y cassandra_processor_vcpus.

  • cassandra_install_packages (predeterminado: True): Un valor booleano que indica si este rol de Ansible debe intentar instalar paquetes o no. Si se establece en False, permite que un usuario use este rol para configurar Cassandra, pero no intenta instalarlo (por ejemplo, lo han instalado desde el código fuente).

  • cassandra_join_cluster (predeterminado: False): Esta es una función experimental, ¡use con extrema precaución! Si se establece como verdadero y se encuentra que cassandra_node_count es 1 en un nodo, se llevarán a cabo las siguientes acciones en ese nodo antes de que se configure:

    • Cassandra se detendrá.
    • El directorio/directorios de datos de Cassandra se borrarán de todos los datos.

    Una vez hecho esto, el nodo será reconfigurado y se unirá a un clúster (que debería ser más grande que un nodo).

  • cassandra_max_heapsize_mb: Un hecho personalizado que devuelve un valor (MB) que puede ser adecuado para establecer el MAX_HEAP_SIZE. Vea Ajuste de recursos de Java para más detalles. Requiere que se establezca el hecho cassandra_memtotal_mb.

  • cassandra_memtotal_mb (predeterminado: ansible_memtotal_mb si se establece): Se utiliza para calcular cassandra_cms_max_heapsize_mb, cassandra_max_heapsize_mb, cassandra_cms_heap_new_size_mb y cassandra_heap_new_size_mb.

  • cassandra_path: Esta variable se introdujo en la versión 1.4.0, pero se olvidó de documentarse. Como se indicó aquí, si la variable se define cuando se establece y se elimina el directorio, no se vuelve a crear. La variable ahora se ha obsoleto a favor de cassandra_directories.

  • cassandra_node_count: Una variable de solo lectura que intenta contener el número de nodos en el clúster. Solo se establecerá si cassandra_join_cluster está establecido como True.

  • cassandra_package (predeterminado: cassandra): El nombre del paquete que se instalará para proporcionar Cassandra.

  • cassandra_processor_vcpus (predeterminado: ansible_processor_vcpus si se establece): Se utiliza para calcular cassandra_cms_heap_new_size_mb y cassandra_heap_new_size_mb.

  • cassandra_rack: Si está definido, establecerá el rack en cassandra-rackdc.properties.

    Esta opción está obsoleta y será eliminada en una futura versión. Utilice cassandra_regex_replacements en su lugar.

  • cassandra_regex_replacements (predeterminado: []): Una lista de hashes que describen un path que es relativo al cassandra_configuration_directory, regexp que es una expresión regular para encontrar en un archivo y line es el reemplazo dentro del archivo. Vea el ejemplo de playbook para más detalles.

  • cassandra_repo_apache_release (predeterminado: Ninguno): El nombre de la serie de versiones (puede ser 40x, 311x o 30x). Esto debe establecerse si cassandra_configure_apache_repo está establecido como True.

  • cassandra_service_enabled (predeterminado: ): ¿Debería habilitarse el servicio de Cassandra? (puede ser sí o no).

  • cassandra_service_restart (predeterminado: True): Si se establece como verdadero, los cambios en el archivo de configuración de Cassandra o los directorios de datos garantizarán que el servicio de Cassandra se actualice después de los cambios. Establecer esta bandera como falsa desactivará este comportamiento, permitiendo así que los cambios se realicen pero permitiendo al usuario controlar cuándo se reinicia el servicio.

  • cassandra_systemd_enabled (predeterminado: False): ¿Debería habilitarse el servicio de Cassandra a través de systemd? Si se establece como True, se colocará un archivo de unidad en cassandra_systemd_path creado a partir de la plantilla cassandra_systemd_template.

  • cassandra_systemd_path (predeterminado: /usr/lib/systemd/system/cassandra.service): La ruta a un archivo de unidad para Cassandra. Esta variable se ignora si cassandra_systemd_enabled es False.

  • cassandra_systemd_template (predeterminado: "systemd/system/cassandra.service.j2"): La ruta a una plantilla de la cual crear un archivo de unidad para Cassandra. Esta variable se ignora si cassandra_systemd_enabled es False.

  • cassandra_task_delay (predeterminado: 10): Las tareas de Ansible que dependen de la conectividad de red (es decir, apt, apt_key, apt_repository, package y yum) pueden verse afectadas por alta latencia, por lo que esas tareas están configuradas para reintentar. Este parámetro controla cuánto esperar entre los intentos. Vea también cassandra_task_retries.

  • cassandra_task_retries (predeterminado: 5): Las tareas de Ansible que dependen de la conectividad de red (es decir, apt, apt_key, apt_repository, package y yum) pueden verse afectadas por alta latencia, por lo que esas tareas están configuradas para reintentar. Este parámetro define cuántos intentos se deben realizar. Vea también cassandra_task_delay.

Ejemplo de Playbook

Este playbook debería ser suficiente para configurar Cassandra con una configuración muy básica configuración:

---
- name: Ejemplo de Playbook para el rol 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 }}"
      # Para un valor razonable para establecer num_tokens, por favor vea
      # https://cassandra.apache.org/doc/latest/getting_started/production.html#tokens
      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:
            # Esto establece la semilla en el primer nodo en el grupo de Ansible llamado
            # cassandra.
            - seeds: "{{ hostvars[groups['cassandra'][0]]['ansible_default_ipv4'].address }}"
      start_native_transport: true
    cassandra_configure_apache_repo: true
    # Crear una estructura de directorios alternativa para los datos de Cassandra.
    # En este ejemplo, habrá un directorio llamado /data propiedad de root
    # con permisos rwxr-xr-x. Tendrá una serie de subdirectorios
    # todos los cuales se establecerán por defecto como propiedad del usuario de cassandra
    # con permisos rwx------.
    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

Para ver los playbooks que se utilizan para pruebas vea molecule/default/converge.yml y molecule/combine_cluster/converge.yml.

Licencia

GPLv3

Información del Autor

Desarrollado por la League of Crafty Programmers Ltd.

Para plantear problemas o hacer contribuciones, visite https://github.com/locp/ansible-role-cassandra/issues

Acerca del proyecto

Ansible role to install Apache Cassandra.

Instalar
ansible-galaxy install locp.cassandra
Licencia
lgpl-3.0
Descargas
22.9k