Cp-ansible: Objectif du rôle confluent.variables_handlers

Créé le 7 avr. 2020  ·  9Commentaires  ·  Source: confluentinc/cp-ansible

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'"}
help wanted

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

Tous les 9 commentaires

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 :)

Cette page vous a été utile?
0 / 5 - 0 notes