このリポジトリの5.4.1-postブランチを使用して、コンフルエントなKafkaとzookeeperをインストールしようとしています。
confluent.zookeeperおよびconfluent.kafkaロールの従属ロールとしてconfluent.variables_handlersを使用する目的は何ですか。 このオーバーライドconfluent.zookeeper /デフォルト/ main.yamlで飼育係変数、同様kafka_brokerでconfluent.kafka /defaults/main.yaml。 kafkaをインストールすると、このエラーが発生します。
TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ********
FAILED! => {"msg": "'dict object' has no attribute 'datadir'"}
実際に辞書をマージする必要があります。cp-ansibleを実行するときの現在のディレクトリがcp-ansible自体のルートであることを確認してください。 これにより、 hash_behaviour=merge
含むansible.cfgファイルが取得されます
確かに、変数の場所はわかりにくいので、時間があれば改善したいと思っています。
やってみました。 同じプレイブックを実行すると、
TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ******
{"msg": "'dict object' has no attribute 'kafka_broker'"}
うーん奇妙な、あなたは提供できますか:
git status
git branch
cat hosts.yml
またはインベントリファイルの名前は何でも
良い。 私はそれをこのhosts.ymlで動作させました
all:
vars:
ssl_enabled: false
ssl_mutual_auth_enabled: false
sasl_protocol: none
kafka_broker_configure_additional_brokers: false
kafka_broker:
vars:
kafka_broker:
datadir:
- /var/lib/kafka/my-data
hosts:
172.XX.YY.20:
172.XX.YY.18:
172.XX.YY.19:
これに先立ち、動的インベントリのグループ変数の一部としてkafka_brokerを追加しました。 どういうわけか機能していませんでした。 私はそれをチェックしています。 迅速な支援をありがとう。
よさそうだね! 動的インベントリを試したことはありませんが、hash_mergingが有効になっている限り、cp-ansibleは機能するはずです。
もう1つ-IPアドレスを使用したホスト名の検証で問題が発生したため、暗号化をオンにする方向に進む場合は、おそらくホスト名を使用します
インベントリでKafkaVMをkafka_hostsとしてグループ化したため、all.yamlのホスト値を変更すると次のようになります。
- name: Kafka Broker Provisioning
# hosts: kafka_broker
hosts: kafka_hosts
そして、このようにインベントリディレクトリの下にグループ変数を定義しました。
# File kafka_hosts.yaml
---
ssl_enabled: false
ssl_mutual_auth_enabled: false
sasl_protocol: none
kafka_broker_configure_additional_brokers: false
confluent_server_enabled: false
kafka_broker_service_environment_overrides:
KAFKA_HEAP_OPTS: "-Xms1g -Xmx1g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
kafka_broker:
datadir:
- /var/lib/kafka/
auto.create.topics.enable: true
properties:
num.partitions: 20
log.flush.interval.messages: 10000
log.flush.interval.ms: 1000
zookeeper.connection.timeout.ms: 6000
offsets.topic.replication.factor: 2
min.insync.replicas: 2
default.replication.factor: 3
これは、kafka_brokerのようなマップを除くすべての変数を尊重しています。 それは私にエラーを与えます
FAILED! => {"msg": "'dict object' has no attribute 'kafka_broker'"}
グループに常にkafka_brokerという名前を
申し訳ありませんが、私はansibleの初心者です。 多分私はいくつかの基本を欠いています。
ここでも同じこと( @sandeeprapido )を実行しました。これを機能させるには、ホストの名前空間をkafka_brokerにする必要があります。
あなたはまだこれについて助けが必要ですか?
コードにデバッグタスクを追加して、変数がどのように設定されているかを確認できます。 これをどこかに追加します
- debug: var=kafka_broker
また、hash_mergingがansible.cfgで使用されていることを確認してください
ホストグループにkafka_brokerとは異なる名前を付ける必要がありました。 そこで、プレイブックに変更を加えました。 ホストグループ名を保持する変数kafka_broker_host_group
を追加しました。
そして、以下のようにロールファイルに変更を加えました。
bootstrap.servers={% for host in groups['kafka_broker'] %}
はそれをbootstrap.servers={% for host in groups[kafka_broker_host_group]
変更しました。 これは、カスタムグループ名を付けるのに役立ちました。
はい、hash_behaviourをマージに設定すると、この問題を開いた元のバグを解決するのに役立ちました。
助けてくれてありがとう :)
最も参考になるコメント
実際に辞書をマージする必要があります。cp-ansibleを実行するときの現在のディレクトリがcp-ansible自体のルートであることを確認してください。 これにより、
hash_behaviour=merge
含むansible.cfgファイルが取得されます確かに、変数の場所はわかりにくいので、時間があれば改善したいと思っています。