Cp-ansible: confluent.variables_handlersロールの目的

作成日 2020年04月07日  ·  9コメント  ·  ソース: confluentinc/cp-ansible

このリポジトリの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'"}
help wanted

最も参考になるコメント

実際に辞書をマージする必要があります。cp-ansibleを実行するときの現在のディレクトリがcp-ansible自体のルートであることを確認してください。 これにより、 hash_behaviour=merge含むansible.cfgファイルが取得されます

確かに、変数の場所はわかりにくいので、時間があれば改善したいと思っています。

全てのコメント9件

実際に辞書をマージする必要があります。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をマージに設定すると、この問題を開いた元のバグを解決するのに役立ちました。

助けてくれてありがとう :)

このページは役に立ちましたか?
0 / 5 - 0 評価