kafkaブローカープロパティのテンプレートファイルでは、インベントリファイルhosts.yml
を参照する変数{{kafka.broker.id}}
を使用します。 ただし、 {{kafka}}
変数は、ロールのdefaults
定義されています。
{{kafka.broker.id}}
は最初にinventory_host
ディクショナリから取得されるため、 Ansibleの変数の優先順位の階層により、これは引き続き正しく実行されますが、わかりやすくするために、名前空間を混在させない方がよいでしょう。
これを明確にするために{{ inventory_hostname.kafka.broker.id }}
を使用する必要があると思います。
listeners=PLAINTEXT://:{{broker.config.port}}
同じことが起こります。 その場合、 {{broker}}
はconfluent.common/defaults/main.yml
ます。 ここで名前空間をより適切にすると、状況がより明確になります。
これがansible.cfg
のマージプロパティが行っていることです。 私はまだこれがプレイブックを読みにくくし、学ぶのを難しくしていると思います。
今日「confluent.kafka-broker」の役割を実行し、それを見つけるのに数時間を費やすと、同じ問題が発生します。
@ chuck-confluent-今日この状況に遭遇しました。 broker.id={{ inventory_hostname.kafka.broker.id }}
を使用するようにbase_server_properties Jinjaテンプレートを更新し、Ansibleを再実行すると、次のエラーが発生します。 まだ理由をデバッグしようとしています。
TASK [confluent.kafka-broker:broker sasl_ssl config] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
致命的:[localhost]:失敗しました! => {"changed":false、 "msg": "AnsibleUndefinedVariable: 'ansible.parsing.yaml.objects.AnsibleUnicodeオブジェクト'には属性 'kafka'がありません"}
@ chuck-confluent次のPRをマージしました。これにより、すべてではないにしてもほとんどのプロパティがオーバーライド可能になります。 あなたが見ている問題を解決する必要があります。
最も参考になるコメント
これが
ansible.cfg
のマージプロパティが行っていることです。 私はまだこれがプレイブックを読みにくくし、学ぶのを難しくしていると思います。