J'essaie d'installer Kafka confluent et zookeeper en utilisant la branche 5.4.1-post de ce référentiel.
Quel est le but de l'utilisation de confluent.variables_handlers comme rôle dépendant dans les rôles confluent.zookeeper et confluent.kafka. Cette opération remplace la variable Zookeeper dans confluent.zookeeper / défaut / main.yaml, de même kafka_broker dans confluent.kafka /defaults/main.yaml. J'obtiens cette erreur lorsque j'installe kafka.
TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ********
FAILED! => {"msg": "'dict object' has no attribute 'datadir'"}
Il devrait en fait fusionner les dictionnaires, assurez-vous que votre répertoire actuel lors de l'exécution de cp-ansible est la racine de cp-ansible lui-même. Cela vous fera gagner le fichier ansible.cfg avec hash_behaviour=merge
J'admets que l'emplacement des variables est déroutant, et j'espère l'améliorer quand j'aurai le temps
J'ai essayé ça. Maintenant, quand je lance le même playbook, je reçois
TASK [confluent.kafka_broker : Set Permissions on Data Dirs] ******
{"msg": "'dict object' has no attribute 'kafka_broker'"}
Hum étrange, pouvez-vous fournir :
git status
git branch
cat hosts.yml
ou quel que soit le nom de votre fichier d'inventaire
Bien. Je l'ai fait fonctionner avec ce 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:
Avant cela, j'ai ajouté kafka_broker dans le cadre des variables de groupe dans l'inventaire dynamique. Cela ne fonctionnait pas. Je vérifie ça. Merci pour l'aide rapide.
Ouais ça a l'air bon ! Je n'ai pas essayé les inventaires dynamiques, mais tant que hash_merging est activé, cp-ansible devrait fonctionner !
Une autre chose - j'ai eu des problèmes avec la validation du nom d'hôte à l'aide d'adresses IP, donc si vous allez dans le sens de l'activation du cryptage, j'utiliserais probablement des noms d'hôte
J'ai regroupé mes machines virtuelles Kafka en tant que kafka_hosts dans mon inventaire, donc la modification des valeurs des hôtes dans all.yaml ressemble à ceci.
- name: Kafka Broker Provisioning
# hosts: kafka_broker
hosts: kafka_hosts
et défini des variables de groupe sous le répertoire d'inventaire comme celui-ci.
# 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
Cela respecte toutes les variables à l'exception des cartes comme kafka_broker. ça me donne l'erreur
FAILED! => {"msg": "'dict object' has no attribute 'kafka_broker'"}
Dois-je toujours nommer le groupe kafka_broker ?
Désolé, je suis un débutant sur ansible. Peut-être qu'il me manque quelques bases.
Je viens de vivre la même chose ici -
Avez-vous encore besoin d'aide à ce sujet ?
Vous pouvez ajouter des tâches de débogage dans le code pour voir en quoi vos variables sont définies. j'ajouterais ça quelque part
- debug: var=kafka_broker
Confirmez également que hash_merging est utilisé avec votre ansible.cfg
J'avais besoin de nommer le groupe hôte comme quelque chose de différent de kafka_broker. J'ai donc fait un changement dans le playbook. J'ai ajouté une variable kafka_broker_host_group
qui contient le nom du groupe d'hôtes.
Et apporté des modifications aux fichiers de rôles comme ci-dessous.
bootstrap.servers={% for host in groups['kafka_broker'] %}
changé en bootstrap.servers={% for host in groups[kafka_broker_host_group]
. Cela m'a aidé à avoir des noms de groupe personnalisés.
Et oui, la fusion de hash_behaviour m'a aidé à résoudre le bogue d'origine pour lequel j'ai ouvert ce problème.
Merci pour l'aide :)
Commentaire le plus utile
Il devrait en fait fusionner les dictionnaires, assurez-vous que votre répertoire actuel lors de l'exécution de cp-ansible est la racine de cp-ansible lui-même. Cela vous fera gagner le fichier ansible.cfg avec
hash_behaviour=merge
J'admets que l'emplacement des variables est déroutant, et j'espère l'améliorer quand j'aurai le temps