في ملف النموذج لخصائص وسيط kafka ، نستخدم المتغير {{kafka.broker.id}}
يشير إلى ملف المخزون hosts.yml
. لكن المتغير {{kafka}}
محدد في الدور defaults
.
سيستمر تشغيل هذا بشكل صحيح بسبب التسلسل الهرمي للأسبقية المتغيرة في Ansible ، حيث سيتم أخذ قيمة {{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" اليوم وأمضي عدة ساعات في العثور عليه.
@ تشاك كونفلوينت - واجهت هذا الوضع اليوم. عندما أقوم بتحديث نموذج Jinja لـ base_server_properties لاستخدام broker.id={{ inventory_hostname.kafka.broker.id }}
وإعادة تشغيل Ansible ، أحصل على الخطأ التالي. لا تزال تحاول تصحيح السبب.
TASK [confluent.kafka وسيط: وسيط sasl_ssl التكوين] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
قاتل: [المضيف المحلي]: فشل! => {"تم تغييره": خطأ، "msg": "AnsibleUndefinedVariable: 'ansible.parsing.yaml.objects.AnsibleUnicode object' ليس له سمة 'kafka'"}
@ chuck-confluent لقد دمجنا العلاقات العامة التالية ، مما يجعل معظم الخصائص إن لم يكن جميعها قابلة للتجاوز. يجب حل المشكلات التي تراها.
التعليق الأكثر فائدة
أرى الآن أن هذا ما تقوم به خاصية الدمج
ansible.cfg
. ما زلت أعتقد أن هذا يجعل كتيب اللعبة أقل قابلية للقراءة ويصعب التعلم منه.