dragomirr.kafka
Rol de Ansible para Kafka
Rol de Ansible para instalar Kafka en modo KRaft en distribuciones Debian y RedHat. KRaft está marcado como listo para producción en la versión 3.3.1, por lo que este rol debe usarse para desplegar versiones de Kafka mayores o iguales a 3.3.1.
Se ha probado con Ubuntu 22.04 y AlmaLinux 8, pero debería funcionar con la mayoría de las distribuciones, especialmente cuando no se utiliza este rol para instalar dependencias. Consulta la variable kafka_install_dependencies
.
Para más información, consulta el registro de cambios.
Requisitos
- Arquitectura x86_64 en los servidores que ejecutarán Kafka.
- Ansible 2.15 -- no se ha probado con otras versiones, pero probablemente funcionaría con cualquier versión igual o superior a 2.10.
- Java instalado -- versión 8 (obsoleta), 11 o 17. --
apt install openjdk-17-jre-headless
odnf install java-17-openjdk-headless
. - Para Ubuntu, se necesita setfacl del paquete
acl
--apt install acl
.
Variables del Rol
Requeridas:
kafka_node_id
-- ID del nodo de Kafka. Debe ser un entero o cero y único por host.
Opcionales:
kafka_topics
-- lista de temas de Kafka con configuraciones de tema.kafka_install_dependencies
-- ¿debe instalarse Java y tambiénacl
para distribuciones basadas en Debian? Por ahora, se puede instalar utilizando el rol configurando esto entrue
.kafka_config_path
-- si no se establece, la configuración se desplegará en el hogar de Kafka. No debe configurarse en la ubicación de configuración predeterminada, ya que las ejecuciones subsiguientes del rol no serán idempotentes y causarán un reinicio de Kafka.kafka_additional_config
-- especificar un mapa de parámetros de configuración que no están definidos por el rol.kafka_opts
-- especificar una lista o cadena de opciones de Kafka para ejecutar al inicio. A partir de esta variable, se creará la variable de entornoKAFKA_OPTS
.
Dependencias
Ninguna con kafka_install_dependencies=true
. Para otros casos, consulta la sección de requisitos.
Ejemplo de Playbook
Instalar el rol usando ansible-galaxy ansible-galaxy install dragomirr.kafka
- hosts: servers
roles:
- role: dragomirr.kafka
# establecer kafka_node_id en el play es válido solo si tienes 1 nodo de kafka.
# si tienes múltiples nodos de kafka, necesitas establecer un kafka_node_id único para cada nodo.
kafka_node_id: 0
kafka_heap_size: 2G
kafka_install_dependencies: true
kafka_topics:
- name: topic1
- name: topic2
replication_factor: 1
partitions: 10
# agregando configuración que no está definida por el rol.
kafka_additional_config:
message.max.bytes: 10000
# agregando opciones de inicio de Kafka.
kafka_opts:
- -XX:NewSize=256m
Licencia
GPL3
Pruebas
Las pruebas se realizan usando molecule con virtualbox y vagrant.
Hay 3 escenarios:
- Escenario predeterminado usando 1 instancia.
- Escenario de clúster usando 3 instancias con roles de controlador y corredor para todas las instancias.
- Escenario de clúster combinado usando 6 instancias donde 3 tienen rol de corredor y controlador, y 3 solo de corredor.
ansible-galaxy install dragomirr.kafka