Я пытаюсь установить сливающиеся Kafka и zookeeper, используя ветку 5.4.1-post этого репо.
Какова цель использования confluent.variables_handlers в качестве зависимой роли в ролях confluent.zookeeper и confluent.kafka. Это переопределяет переменную zookeeper в confluent.zookeeper / defaults / 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. Это даст вам файл ansible.cfg с hash_behaviour=merge
Признаюсь, расположение переменных сбивает с толку, и я надеюсь исправить его, когда у меня будет время
Я пробовал это. Теперь, когда я запускаю ту же книгу, я получаю
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 должен работать!
Еще одна вещь - у меня были проблемы с проверкой имени хоста с использованием IP-адресов, поэтому, если вы собираетесь включить шифрование, я бы, вероятно, использовал имена хостов
Я сгруппировал свои виртуальные машины Kafka как 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 ?
Извините, я новичок в ансибле. Может быть, мне не хватает основ.
Просто проделал то же самое здесь -
Вам все еще нужна помощь?
Вы можете добавить в код задачи отладки, чтобы увидеть, как установлены ваши вары. Я бы добавил это где-нибудь
- 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. Это даст вам файл ansible.cfg с
hash_behaviour=merge
Признаюсь, расположение переменных сбивает с толку, и я надеюсь исправить его, когда у меня будет время