Cp-ansible: Propósito del rol confluent.variables_handlers

Creado en 7 abr. 2020  ·  9Comentarios  ·  Fuente: confluentinc/cp-ansible

Estoy tratando de instalar confluentes Kafka y zookeeper usando la rama 5.4.1-post de este repositorio.
¿Cuál es el propósito de usar confluent.variables_handlers como un rol dependiente en los roles confluent.zookeeper y confluent.kafka? Esto anula la variable zookeeper en confluent.zookeeper / defaults / main.yaml, de forma similar kafka_broker en confluent.kafka /defaults/main.yaml. Recibo este error cuando instalo kafka.

TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ********
 FAILED! => {"msg": "'dict object' has no attribute 'datadir'"}
help wanted

Comentario más útil

En realidad, debería fusionar los diccionarios, asegúrese de que su directorio actual al ejecutar cp-ansible sea la raíz de cp-ansible. Esto le dará el archivo ansible.cfg con hash_behaviour=merge

Lo admito, la ubicación de las variables es confusa y espero mejorarla cuando tenga tiempo

Todos 9 comentarios

En realidad, debería fusionar los diccionarios, asegúrese de que su directorio actual al ejecutar cp-ansible sea la raíz de cp-ansible. Esto le dará el archivo ansible.cfg con hash_behaviour=merge

Lo admito, la ubicación de las variables es confusa y espero mejorarla cuando tenga tiempo

Intenté eso. Ahora, cuando ejecuto el mismo libro de jugadas, obtengo

TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ******
 {"msg": "'dict object' has no attribute 'kafka_broker'"}

Mmmm extraño, ¿puedes proporcionar:

git status
git branch
cat hosts.yml

o como se llame su archivo de inventario

Bien. Lo tengo funcionando con este hosts.yml

all:
  vars:
    ssl_enabled: false
    ssl_mutual_auth_enabled: false
    sasl_protocol: none
    kafka_broker_configure_additional_brokers: false

kafka_broker:
  vars:
    kafka_broker:
      datadir:
        - /var/lib/kafka/my-data
  hosts:
    172.XX.YY.20:

    172.XX.YY.18:

    172.XX.YY.19:

Antes de esto, agregué kafka_broker como parte de las

¡Eso se ve bien! No he probado inventarios dinámicos, pero mientras hash_merging esté habilitado, ¡cp-ansible debería funcionar!

Otra cosa: he tenido problemas con la validación del nombre de host usando direcciones IP, por lo que si va en la dirección de activar el cifrado, probablemente usaría nombres de host

He agrupado mis máquinas virtuales Kafka como kafka_hosts en mi inventario, por lo que cambiar los valores de hosts en all.yaml se ve así.

- name: Kafka Broker Provisioning
  # hosts: kafka_broker
  hosts: kafka_hosts

y variables de grupo definidas en el directorio de inventario como este.

# File kafka_hosts.yaml
---
ssl_enabled: false
ssl_mutual_auth_enabled: false
sasl_protocol: none
kafka_broker_configure_additional_brokers: false
confluent_server_enabled: false

kafka_broker_service_environment_overrides:
  KAFKA_HEAP_OPTS: "-Xms1g -Xmx1g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"

kafka_broker:
  datadir:
    - /var/lib/kafka/
  auto.create.topics.enable: true
  properties:
    num.partitions: 20
    log.flush.interval.messages: 10000
    log.flush.interval.ms: 1000
    zookeeper.connection.timeout.ms: 6000
    offsets.topic.replication.factor: 2
    min.insync.replicas: 2
    default.replication.factor: 3  

Esto es respetando todas las variables excepto mapas como kafka_broker. Me da el error

 FAILED! => {"msg": "'dict object' has no attribute 'kafka_broker'"}

¿Debería nombrar siempre al grupo como kafka_broker ?

Lo siento, soy un novato en ansible. Tal vez me falten algunos conceptos básicos.

Simplemente pasé por lo mismo aquí, @sandeeprapido , necesita espacio de nombres de sus hosts en kafka_broker para que esto funcione.

¿Aún necesitas ayuda con esto?

Puede agregar tareas de depuración en el código para ver cómo están configuradas sus vars. Agregaría esto en alguna parte

- debug: var=kafka_broker

También confirme que hash_merging se está utilizando con su ansible.cfg

Necesitaba nombrar el grupo de host como algo diferente de kafka_broker. Así que hice un cambio en el libro de jugadas. Agregué una variable kafka_broker_host_group que contiene el nombre del grupo de hosts.
E hizo cambios en los archivos de roles como se muestra a continuación.
bootstrap.servers={% for host in groups['kafka_broker'] %} cambió a bootstrap.servers={% for host in groups[kafka_broker_host_group] . Esto me ayudó a tener nombres de grupos personalizados.
Y sí, configurar hash_behaviour para fusionar me ayudó a resolver el error original por el que abrí este problema.

Gracias por la ayuda :)

¿Fue útil esta página
0 / 5 - 0 calificaciones