0x0i.elasticsearch
Rol de Ansible :mag_right: :high_brightness: Elasticsearch
Contenido
- Plataformas soportadas
- Requisitos
- Variables del Rol
- Dependencias
- Ejemplo de Playbook
- Licencia
- Información del Autor
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.
- Ten en cuenta que el directorio de instalación es determinado por el sistema de gestión de paquetes y actualmente se predetermina a
- 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 deelasticsearch
. 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 Elasticsearchjvm.options
para configurar los ajustes de JVM de Elasticsearchlog4j2.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 deelasticsearch
, 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.
Elasticsearch, a real-time distributed search and analytics engine
ansible-galaxy install 0x0i.elasticsearch