En el archivo de plantilla para las propiedades del corredor de kafka, usamos la variable {{kafka.broker.id}}
referencia al archivo de inventario hosts.yml
. Pero la variable {{kafka}}
se define en la función defaults
.
Esto aún se ejecutará correctamente debido a la jerarquía de prioridad de variables de {{kafka.broker.id}}
tomará primero del diccionario inventory_host
, pero para mayor claridad sería mejor no mezclar espacios de nombres.
Creo que deberíamos usar {{ inventory_hostname.kafka.broker.id }}
para aclarar esto.
Lo mismo sucede con listeners=PLAINTEXT://:{{broker.config.port}}
. En ese caso, {{broker}}
proviene de confluent.common/defaults/main.yml
. Un mejor espacio de nombres aquí aclarará las cosas.
Ahora veo que esto es lo que está haciendo la propiedad de fusión de ansible.cfg
. Sigo pensando que esto hace que el libro de jugadas sea menos legible y más difícil de aprender.
Sufro el mismo problema cuando ejecuto el rol 'confluent.kafka-broker' hoy y paso varias horas encontrándolo.
@ chuck-confluent - Me encontré con esta situación hoy. Cuando actualizo la plantilla Jinja base_server_properties para usar broker.id={{ inventory_hostname.kafka.broker.id }}
y vuelvo a ejecutar Ansible, aparece el siguiente error. Todavía estoy tratando de depurar por qué.
TASK [confluent.kafka-broker: Broker sasl_ssl config] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
fatal: [localhost]: ¡FALLÓ! => {"cambiado": falso, "msg": "AnsibleUndefinedVariable: 'ansible.parsing.yaml.objects.AnsibleUnicode object' no tiene atributo 'kafka'"}
@ chuck-confluent acabamos de fusionar el siguiente PR, lo que hace que la mayoría, si no todas, las propiedades sean reemplazables. Debería resolver los problemas que está viendo.
Comentario más útil
Ahora veo que esto es lo que está haciendo la propiedad de fusión de
ansible.cfg
. Sigo pensando que esto hace que el libro de jugadas sea menos legible y más difícil de aprender.