В файле шаблона для свойств брокера kafka мы используем переменную {{kafka.broker.id}}
относящуюся к файлу инвентаря hosts.yml
. Но переменная {{kafka}}
определена в defaults
роли.
Это по-прежнему будет работать правильно из-за иерархии приоритета переменных в {{kafka.broker.id}}
сначала будет взято из словаря inventory_host
, но для ясности было бы лучше не смешивать пространства имен.
Я думаю, нам следует использовать {{ inventory_hostname.kafka.broker.id }}
чтобы прояснить это.
То же самое происходит с listeners=PLAINTEXT://:{{broker.config.port}}
. В этом случае {{broker}}
происходит от confluent.common/defaults/main.yml
. Лучшее использование пространства имен сделает ситуацию более понятной.
Теперь я вижу, что делает свойство слияния ansible.cfg
. Я все еще думаю, что это делает сборник игр менее читаемым и трудным для изучения.
У меня такая же проблема, когда я запускаю сегодня роль confluent.kafka-broker и трачу несколько часов на ее поиск.
@ chuck-confluent - Я сегодня столкнулся с такой ситуацией. Когда я обновляю шаблон Jinja base_server_properties для использования broker.id={{ inventory_hostname.kafka.broker.id }}
и повторно запускаю Ansible, я получаю следующую ошибку. Все еще пытаюсь выяснить, почему.
ЗАДАЧА [confluent.kafka-брокер: Брокер sasl_ssl конфиг] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
фатальный: [localhost]: НЕ ВЫПОЛНЕНО! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'ansible.parsing.yaml.objects.AnsibleUnicode object' не имеет атрибута 'kafka'"}
@ chuck-confluent мы только что объединили следующий PR, что делает большинство, если не все свойства, переопределяемыми. Должен решить проблемы, которые вы видите.
Самый полезный комментарий
Теперь я вижу, что делает свойство слияния
ansible.cfg
. Я все еще думаю, что это делает сборник игр менее читаемым и трудным для изучения.