No arquivo de modelo para as propriedades do corretor kafka, usamos a variável {{kafka.broker.id}}
referindo-se ao arquivo de inventário hosts.yml
. Mas a variável {{kafka}}
é definida na função defaults
.
Isso ainda funcionará corretamente por causa da hierarquia de precedência de variável de {{kafka.broker.id}}
será primeiro retirado do dicionário inventory_host
, mas para maior clareza, seria melhor não misturar namespaces.
Acho que devemos usar {{ inventory_hostname.kafka.broker.id }}
para deixar isso claro.
A mesma coisa acontece com listeners=PLAINTEXT://:{{broker.config.port}}
. Nesse caso, {{broker}}
vem de confluent.common/defaults/main.yml
. Um melhor espaçamento de nomes aqui tornará as coisas mais claras.
Vejo agora que é isso que a propriedade de mesclagem de ansible.cfg
está fazendo. Ainda acho que isso torna o manual menos legível e mais difícil de aprender.
Eu sofro o mesmo problema quando executo a função de 'confluent.kafka-broker' hoje e passo várias horas procurando.
@ chuck-confluent - me deparei com essa situação hoje. Quando eu atualizo o modelo Jinja base_server_properties para usar broker.id={{ inventory_hostname.kafka.broker.id }}
e executo novamente o Ansible, recebo o seguinte erro. Ainda tentando depurar o porquê.
TAREFA [confluent.kafka-broker: broker sasl_ssl config] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
fatal: [localhost]: FALHOU! => {"alterado": false, "msg": "AnsibleUndefinedVariable: 'ansible.parsing.yaml.objects.AnsibleUnicode objeto' não tem atributo 'kafka'"}
@ chuck-confluent, acabamos de mesclar o seguinte PR, o que torna a maioria, senão todas as propriedades substituíveis. Deve resolver os problemas que você está vendo.
Comentários muito úteis
Vejo agora que é isso que a propriedade de mesclagem de
ansible.cfg
está fazendo. Ainda acho que isso torna o manual menos legível e mais difícil de aprender.