Cp-ansible: Zweck der Rolle confluent.variables_handlers

Erstellt am 7. Apr. 2020  ·  9Kommentare  ·  Quelle: confluentinc/cp-ansible

Ich versuche, konfluent Kafka und Zookeeper mit dem 5.4.1-post-Zweig dieses Repositorys zu installieren.
Was ist der Zweck der Verwendung von confluent.variables_handlers als abhängige Rolle in den Rollen confluent.zookeeper und confluent.kafka. Dies überschreibt die Variable zookeeper in confluent.zookeeper/defaults/main.yaml, ähnlich kafka_broker in confluent.kafka /defaults/main.yaml. Ich bekomme diesen Fehler, wenn ich Kafka installiere.

TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ********
 FAILED! => {"msg": "'dict object' has no attribute 'datadir'"}
help wanted

Hilfreichster Kommentar

Es sollte eigentlich die Wörterbücher zusammenführen, stellen Sie sicher, dass Ihr aktuelles Verzeichnis beim Ausführen von cp-ansible das Stammverzeichnis von cp-ansible selbst ist. Dadurch erhalten Sie die Datei ansible.cfg mit hash_behaviour=merge

Ich gebe zu, die Position der Variablen ist verwirrend und ich hoffe, sie zu verbessern, wenn ich Zeit habe

Alle 9 Kommentare

Es sollte eigentlich die Wörterbücher zusammenführen, stellen Sie sicher, dass Ihr aktuelles Verzeichnis beim Ausführen von cp-ansible das Stammverzeichnis von cp-ansible selbst ist. Dadurch erhalten Sie die Datei ansible.cfg mit hash_behaviour=merge

Ich gebe zu, die Position der Variablen ist verwirrend und ich hoffe, sie zu verbessern, wenn ich Zeit habe

Das habe ich versucht. Wenn ich jetzt dasselbe Playbook starte, bekomme ich

TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ******
 {"msg": "'dict object' has no attribute 'kafka_broker'"}

Hmm seltsam, können Sie Folgendes angeben:

git status
git branch
cat hosts.yml

oder wie auch immer Ihre Inventardatei heißt

Brunnen. Ich habe es mit diesem hosts.yml zum Laufen gebracht

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:

Zuvor habe ich kafka_broker als Teil von Gruppenvariablen im dynamischen Inventar hinzugefügt. Es funktionierte irgendwie nicht. Das überprüfe ich. Danke für die prompte Hilfe.

Ja das sieht gut aus! Ich habe dynamische Inventarisierungen nicht ausprobiert, aber solange hash_merging aktiviert ist, sollte cp-ansible funktionieren!

Eine andere Sache – ich hatte Probleme mit der Überprüfung von Hostnamen mithilfe von IP-Adressen. Wenn Sie also die Verschlüsselung aktivieren möchten, würde ich wahrscheinlich Hostnamen verwenden

Ich habe meine Kafka-VMs als kafka_hosts in meinem Inventar gruppiert, sodass das Ändern der hosts-Werte in all.yaml wie folgt aussieht.

- name: Kafka Broker Provisioning
  # hosts: kafka_broker
  hosts: kafka_hosts

und definierte Gruppenvariablen unter dem Inventarverzeichnis wie folgt.

# 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  

Dies respektiert alle Variablen außer Karten wie kafka_broker. Es gibt mir den Fehler

 FAILED! => {"msg": "'dict object' has no attribute 'kafka_broker'"}

Soll ich die Gruppe immer als kafka_broker benennen ?

Entschuldigung, ich bin ein Neuling bei Ansible. Vielleicht fehlen mir einige Basics.

Habe gerade das Gleiche hier @sandeeprapido - Sie müssen Ihre Hosts mit kafka_broker benennen, damit dies funktioniert.

Benötigen Sie hierzu noch Hilfe?

Sie können dem Code Debug-Aufgaben hinzufügen, um zu sehen, wie Ihre Vars festgelegt sind. Ich würde das irgendwo hinzufügen

- debug: var=kafka_broker

Bestätigen Sie auch, dass hash_merging mit Ihrer ansible.cfg verwendet wird

Ich musste die Hostgruppe anders als kafka_broker benennen. Also habe ich eine Änderung im Playbook vorgenommen. Ich habe eine Variable kafka_broker_host_group hinzugefügt, die den Namen der Hostgruppe enthält.
Und Änderungen an den Rollendateien wie unten beschrieben.
bootstrap.servers={% for host in groups['kafka_broker'] %} hat es in bootstrap.servers={% for host in groups[kafka_broker_host_group] geändert. Dies hat mir geholfen, benutzerdefinierte Gruppennamen zu haben.
Und ja, das Setzen von hash_behaviour auf merge hat mir geholfen, den ursprünglichen Fehler zu beheben, für den ich dieses Problem geöffnet habe.

Danke für die Hilfe :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen