Saya mencoba menginstal Kafka dan zookeeper yang konfluen menggunakan cabang 5.4.1-post dari repo ini.
Apa tujuan menggunakan confluent.variables_handlers sebagai peran dependen dalam peran confluent.zookeeper dan confluent.kafka. Ini menimpa variabel zookeeper di confluent.zookeeper/defaults/main.yaml, begitu pula kafka_broker di confluent.kafka /defaults/main.yaml. Saya mendapatkan kesalahan ini ketika saya menginstal kafka.
TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ********
FAILED! => {"msg": "'dict object' has no attribute 'datadir'"}
Itu benar-benar harus menggabungkan kamus, pastikan direktori Anda saat ini saat menjalankan cp-ansible adalah root dari cp-ansible itu sendiri. Ini akan memberi Anda file ansible.cfg dengan hash_behaviour=merge
Saya akui, lokasi variabel membingungkan, dan saya berharap untuk memperbaikinya ketika saya punya waktu
Saya mencoba itu. Sekarang ketika saya menjalankan buku pedoman yang sama saya dapatkan
TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ******
{"msg": "'dict object' has no attribute 'kafka_broker'"}
Hmm aneh, bisakah Anda memberikan:
git status
git branch
cat hosts.yml
atau apa pun nama file inventaris Anda
Sehat. Saya membuatnya bekerja dengan hosts.yml ini
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:
Sebelum ini, saya menambahkan kafka_broker sebagai bagian dari grup vars dalam inventaris dinamis. Itu entah bagaimana tidak bekerja. Saya sedang memeriksa itu. Terima kasih atas bantuan yang cepat.
Ya itu terlihat bagus! Saya belum mencoba inventaris dinamis, tetapi selama hash_merging diaktifkan, cp-ansible seharusnya berfungsi!
Hal lain- Saya memiliki masalah dengan validasi nama host menggunakan alamat IP, jadi jika Anda ingin mengaktifkan enkripsi, saya mungkin akan menggunakan nama host
Saya telah mengelompokkan VM Kafka saya sebagai kafka_hosts di inventaris saya, jadi mengubah nilai host di all.yaml terlihat seperti ini.
- name: Kafka Broker Provisioning
# hosts: kafka_broker
hosts: kafka_hosts
dan variabel grup yang ditentukan di bawah direktori inventaris seperti ini.
# 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
Ini menghormati semua variabel kecuali peta seperti kafka_broker. Ini memberi saya kesalahan
FAILED! => {"msg": "'dict object' has no attribute 'kafka_broker'"}
Haruskah saya selalu menamai grup sebagai kafka_broker ?
Maaf, saya seorang pemula untuk ansible. Mungkin saya kehilangan beberapa dasar.
Baru saja mengalami hal yang sama di sini - @sandeeprapido - Anda perlu memberi namespace host Anda ke kafka_broker agar ini berfungsi.
Apakah Anda masih membutuhkan bantuan dalam hal ini?
Anda dapat menambahkan tugas debug dalam kode untuk melihat seperti apa vars Anda disetel. Saya akan menambahkan ini di suatu tempat
- debug: var=kafka_broker
Konfirmasikan juga hash_merging sedang digunakan dengan ansible.cfg Anda
Saya perlu memberi nama grup Host sebagai sesuatu yang berbeda dari kafka_broker. Jadi saya membuat perubahan dalam buku pedoman. Saya menambahkan variabel kafka_broker_host_group
yang menyimpan nama grup host.
Dan membuat perubahan pada file peran seperti di bawah ini.
bootstrap.servers={% for host in groups['kafka_broker'] %}
mengubahnya menjadi bootstrap.servers={% for host in groups[kafka_broker_host_group]
. Ini membantu saya untuk memiliki nama grup khusus.
Dan ya, pengaturan hash_behaviour untuk digabungkan membantu saya menyelesaikan bug asli yang saya buka masalah ini.
Terima kasih untuk bantuannya :)
Komentar yang paling membantu
Itu benar-benar harus menggabungkan kamus, pastikan direktori Anda saat ini saat menjalankan cp-ansible adalah root dari cp-ansible itu sendiri. Ini akan memberi Anda file ansible.cfg dengan
hash_behaviour=merge
Saya akui, lokasi variabel membingungkan, dan saya berharap untuk memperbaikinya ketika saya punya waktu