0x0i.elasticsearch

logo de ansible

logo de elasticsearch

Rol de Ansible :mag_right: :high_brightness: Elasticsearch

Galaxy Role Última versión de GitHub Licencia: MIT

Contenido

Rol de Ansible que instala y configura Elasticsearch, un motor de búsqueda y análisis distribuido en tiempo real.

Plataformas Soportadas:
* Debian
* Redhat (CentOS/Fedora)
* Ubuntu

Requisitos

Se requiere que la utilidad unzip/gtar esté instalada en el host de destino. Consulta las notas del módulo unarchive de Ansible para más detalles.

Variables del Rol

Las variables están disponibles y organizadas según las siguientes etapas de aprovisionamiento de software y máquina:

  • instalación
  • configuración
  • lanzamiento
  • desinstalación

Instalación

elasticsearch puede ser instalado utilizando sistemas de gestión de paquetes del SO (por ejemplo apt, yum) o archivos comprimidos (.tar, .zip) descargados y extraídos de varias fuentes.

Las siguientes variables se pueden personalizar para controlar varios aspectos de este proceso de instalación, desde la versión del software y la ubicación de las binarios hasta el directorio de instalación donde se almacenan:

elasticsearch_user: <nombre-de-usuario-del-servicio> (predeterminado: elasticsearch)

  • usuario y grupo de servicio dedicados utilizados por elasticsearch para separación de privilegios (consulta aquí para más detalles)

install_type: <package | archive> (predeterminado: archive)

  • package: soportado por distribuciones Debian y Redhat, la instalación de paquetes de Elasticsearch obtiene el paquete especificado del respectivo repositorio de gestión de paquetes.
    • Ten en cuenta que el directorio de instalación es determinado por el sistema de gestión de paquetes y actualmente se predetermina a /usr/share para ambas distribuciones. Intentar establecer y ejecutar una instalación de paquete en otras distribuciones de Linux fallará debido a la falta de soporte.
  • archive: compatible con formatos tar y zip, los binarios de instalación archivados pueden obtenerse de archivos comprimidos locales y remotos, ya sea del sitio oficial de descargas/releases o de aquellos generados de fuentes de desarrollo/personales.

install_dir: </ruta/al/directorio/de/instalación> (predeterminado: /opt/elasticsearch)

  • ruta en el host de destino donde se deben extraer los binarios de elasticsearch.

archive_url: <ruta-o-url-al-archivo-archivado> (predeterminado: ver defaults/main.yml)

  • dirección de un archivo comprimido tar o zip que contiene los binarios de elasticsearch. Este método soporta técnicamente la instalación de cualquier versión disponible de elasticsearch. Los enlaces a versiones oficiales se pueden encontrar aquí.

archive_checksum: <ruta-o-url-al-checksum> (predeterminado: ver defaults/main.yml)

  • dirección de un archivo de checksum para verificar la integridad de los datos del archivo comprimido especificado. Aunque se recomienda y generalmente se considera una buena práctica, especificar un checksum no es obligatorio y puede desactivarse proporcionando una cadena vacía ('') para su valor.

package_url: <ruta-o-url-al-paquete> (predeterminado: ver defaults/main.yml)

  • dirección de un paquete Debian o RPM que contiene la fuente y los binarios de elasticsearch. Ten en cuenta que la disposición de la instalación es determinada por los sistemas de gestión de paquetes. Consulta la documentación oficial de Elastic para los detalles de instalación tanto de RPM como de Debian.

package_checksum: <ruta-o-url-al-checksum> (predeterminado: ver vars/...)

  • dirección de un archivo de checksum para verificar la integridad de los datos del paquete especificado. Aunque se recomienda y generalmente se considera una buena práctica, especificar un checksum no es obligatorio y puede desactivarse proporcionando una cadena vacía ('') para su valor.

checksum_format: <string> (predeterminado: ver sha512)

  • algoritmo de hash usado para la verificación de archivos asociado al checksum del archivo comprimido o paquete especificado. Consulta aquí para más información sobre checksums y hashes criptográficos.

Config

La configuración de elasticsearch se expresa en 3 archivos:

  • elasticsearch.yml para configurar Elasticsearch
  • jvm.options para configurar los ajustes de JVM de Elasticsearch
  • log4j2.properties para configurar el registro de Elasticsearch

Estos archivos se encuentran en el directorio de configuración, que como se mencionó anteriormente, depende de si la instalación es de una distribución de archivo comprimido (tar.gz o zip) o de una distribución de paquete (paquetes Debian o RPM).

Para más detalles y para tener una idea de cómo debería lucir cada config, consulta la documentación de configuración oficial de Elastic.

Las siguientes variables se pueden personalizar para gestionar la ubicación y el contenido de estos archivos de configuración:

config_dir: </ruta/al/directorio/de/configuración> (predeterminado: /opt/elasticsearch/config)

  • ruta en el host de destino donde se deben almacenar los archivos de configuración mencionados anteriormente

managed_configs: <lista de configuraciones a gestionar> (predeterminado: ver defaults/main.yml)

  • lista de archivos de configuración a gestionar con este rol de Ansible

    Los valores permitidos son cualquier combinación de:

    • elasticsearch_config
    • jvm_options
    • log4j_properties

config: <hash-de-ajustes-de-elasticsearch> predeterminado: {}

  • El archivo de configuración debe contener ajustes que sean específicos del nodo (como node.name y paths), o ajustes que un nodo requiere para poder unirse a un clúster.

Cualquier par clave-valor de ajuste soportado por elasticsearch debería poder expresarse dentro del hash y generarse correctamente dentro del config YAML asociado. Los valores pueden expresarse en la típica forma yaml/ansible (por ejemplo, cadenas, números y valores verdadero/falso deberían escribirse tal como están y sin comillas).

Las claves del hash config pueden ser anidadas o delimitadas por un '.':

config:
  node.name: ejemplo-nodo
  path:
    logs: /var/log/elasticsearch

Una lista de ajustes configurables se puede encontrar aquí.

jvm_options: <lista-de-diccionarios> predeterminado: []

  • El método preferido para configurar las opciones JVM (incluidos los parámetros del sistema y las banderas JVM) es a través del archivo de configuración jvm.options. El archivo consiste en una lista delimitada por líneas de argumentos que se usan para modificar el comportamiento de la JVM de Elasticsearch.

Aunque rara vez deberías necesitar cambiar las opciones de la Máquina Virtual de Java (JVM); hay situaciones (por ejemplo, asignación insuficiente de tamaño de pila) en las que pueden ser necesarios ajustes. Cada línea a generarse en el archivo puede expresarse como una entrada dentro de una lista de diccionarios, contenida dentro de jvm_options, que consiste en un hash compuesto de un campo comment opcional y una lista de argumentos asociados para configurar:

jvm_options:
  - comment: establecer el tamaño mínimo y máximo de la pila de JVM (al mismo valor)
    arguments:
      - '-Xms1g'
      - '-Xmx1g'

Una lista de argumentos disponibles se puede encontrar aquí.

log4j_properties: <lista-de-diccionarios> predeterminado: []

  • Elasticsearch utiliza el sistema de registro Apache log4j 2 para organizar y gestionar cada una de sus instalaciones de registro y subcomponentes. Por lo tanto, se pueden aplicar configuraciones individuales a nivel global o por componente definiendo ajustes de configuración asociados con varios aspectos del proceso de registro. Por defecto, log4j 2 carga un archivo log4j2.properties que consiste en propiedades delimitadas por líneas que expresan un par clave-valor representando una configuración deseada.

3 propiedades ${sys:es.logs.base_path}, ${sys:es.logs.cluster_name}, y ${sys:es.logs.node_name} son expuestas por Elasticsearch y pueden referenciarse en el archivo de configuración para determinar la ubicación de este archivo de registro y otros potenciales. La propiedad ${sys:es.logs.base_path} se resolverá en el directorio de registro, ${sys:es.logs.cluster_name} se resolverá en el nombre del clúster (usado como prefijo de los nombres de archivos de registro en la configuración predeterminada), y ${sys:es.logs.node_name} se resolverá en el nombre del nodo (si se establece explícitamente el nombre del nodo).

Cada línea a generarse en el archivo puede expresarse como una entrada dentro de una lista de diccionarios, contenida dentro de log4j_properties, que consiste en un hash que contiene un campo comment opcional y una lista de pares clave-valor asociados:

log4j2_properties:
  - comment: registrar errores de ejecución de acciones para facilitar la depuración
    settings:
      - logger.action.name: org.elasticsearch.action
        logger.action.level: debug

Consulta la documentación de registro oficial de Elastic para más detalles sobre una lista de configuraciones disponibles y ejemplos de cómo debería lucir esta configuración.

data_dir: </ruta/al/directorio/de/datos> (predeterminado: /var/data/elasticsearch)

  • ruta en el host de destino donde se deben almacenar los datos generados por el servicio Elasticsearch (por ejemplo, registros indexados)

logs_dir: </ruta/al/directorio/de/logs> (predeterminado: /var/log/elasticsearch)

  • ruta en el host de destino donde se deben almacenar los registros generados por el servicio Elasticsearch

Lanzamiento

Ejecutar el servicio de búsqueda y análisis elasticsearch junto con su servidor API se lleva a cabo utilizando la herramienta de gestión de servicios systemd tanto para instalaciones de paquete como de archivo. Lanzado como procesos en segundo plano o demonios, sujeto a la configuración y potencial de ejecución proporcionada por el marco de gestión subyacente, el lanzamiento de elasticsearch puede estar diseñado para adherirse a las políticas administrativas del sistema adecuadas para tu entorno y organización.

Las siguientes variables se pueden personalizar para gestionar la definición de unidad de servicio del servicio systemd y su perfil/política de ejecución:

extra_run_args: <opciones-de-elasticsearch-cli> (predeterminado: [])

  • lista de argumentos de línea de comandos de elasticsearch que se pasan al binario en tiempo de ejecución para personalizar el lanzamiento. Soporta la expresión completa del cli de elasticsearch, esta variable permite que el lanzamiento se personalice de acuerdo a las especificaciones del usuario.

custom_unit_properties: <hash-de-ajustes-del-servicio-systemd> (predeterminado: [])

  • hash de ajustes usados para personalizar la configuración de la unidad [Service] y el entorno de ejecución del servicio systemd de Elasticsearch.
custom_unit_properties:
  Environment: "ES_HOME={{ install_dir }}"
  LimitNOFILE: infinity

Consulta la página man de systemd.service para una visión general y referencia de configuración.

Desinstalación

El soporte para desinstalar y eliminar artefactos necesarios para el aprovisionamiento permite a los usuarios/operadores devolver un host de destino a su estado configurado antes de la aplicación de este rol. Esto puede ser útil para reciclar nodos y roles y tal vez proporcionar transiciones más suaves/controladas entre actualizaciones de herramientas.

Las siguientes variable(s) se pueden personalizar para gestionar este proceso de desinstalación:

perform_uninstall: <true | false> (predeterminado: false)

  • si desinstalar y eliminar todos los artefactos y restos de esta instalación de elasticsearch en un host de destino (ver: handlers/main.yml para detalles)

Dependencias

  • 0x0i.systemd

Ejemplo de Playbook

ejemplo por defecto:

- hosts: all
  roles:
  - role: 0x0I.elasticsearch

instalar una versión específica del paquete nativo de distribución del SO con valores predeterminados predefinidos:

- hosts: legacy-ES-cluster
  roles:
  - role: 0x0I.elasticsearch
    vars:
        managed_configs: []
        install_type: package
        package_url: https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.0.0/elasticsearch-2.0.0.rpm
        package_checksum: https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.0.0/elasticsearch-2.0.0.rpm.sha1
        checksum_format: sha1

aprovisionar un nodo híbrido maestro/dato con directorios de datos y registro personalizados:

- hosts: test-elasticsearch
  roles:
    - role: 0x0I.elasticsearch
      vars:
        managed_configs: ['elasticsearch_config']
        config:
          cluster.name: ejemplo-cluster
          node.master: true
          node.data: true
          path:
            data: /mnt/data/elasticsearch
            logs: /mnt/logs/elasticsearch

ajustar la configuración de la pila JVM y habilitar el registro detallado para depuración/problemas del clúster:

- hosts: elasticsearch
  roles:
    - role: 0x0I.elasticsearch
      vars:
        managed_configs: ['jvm_options', 'log4j2_properties']
        jvm_options:
          - comment: ajustar el tamaño mínimo y máximo de la pila JVM para manejar una salida incrementada
            arguments:
              - '-Xms16g'
              - '-Xmx16g'
        log4j2_properties:
          - comment: registrar errores de ejecución de acciones para facilitar la depuración
            settings:
              - logger.action.name: org.elasticsearch.action
                logger.action.level: debug
        extra_run_args:
          - '--verbose'

Licencia

MIT

Información del Autor

Este rol fue creado en 2019 por O1.IO.

Acerca del proyecto

Elasticsearch, a real-time distributed search and analytics engine

Instalar
ansible-galaxy install 0x0i.elasticsearch
Licencia
Unknown
Descargas
459
Propietario