Cp-ansible: Objetivo da função confluent.variables_handlers

Criado em 7 abr. 2020  ·  9Comentários  ·  Fonte: confluentinc/cp-ansible

Estou tentando instalar o Kafka confluente e o zookeeper usando o branch post 5.4.1 deste repositório.
Qual é o propósito de usar confluent.variables_handlers como uma função dependente nas funções confluent.zookeeper e confluent.kafka. Isso substitui a variável zookeeper em confluent.zookeeper / defaults / main.yaml, da mesma forma kafka_broker em confluent.kafka /defaults/main.yaml. Recebo este erro quando instalo o kafka.

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

Comentários muito úteis

Na verdade, ele deve mesclar os dicionários, certifique-se de que seu diretório atual ao executar cp-ansible seja a raiz do próprio cp-ansible. Isso lhe dará o arquivo ansible.cfg com hash_behaviour=merge

Admito que a localização das variáveis ​​é confusa e espero melhorá-la quando tiver tempo

Todos 9 comentários

Na verdade, ele deve mesclar os dicionários, certifique-se de que seu diretório atual ao executar cp-ansible seja a raiz do próprio cp-ansible. Isso lhe dará o arquivo ansible.cfg com hash_behaviour=merge

Admito que a localização das variáveis ​​é confusa e espero melhorá-la quando tiver tempo

Eu tentei isso. Agora, quando executo o mesmo manual, recebo

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

Hmm estranho, você pode fornecer:

git status
git branch
cat hosts.yml

ou qualquer que seja o nome do seu arquivo de inventário

Nós vamos. Consegui trabalhar com este 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:

Antes disso, adicionei kafka_broker como parte do grupo vars no inventário dinâmico. De alguma forma, não estava funcionando. Estou verificando isso. Obrigado pela ajuda imediata.

Sim, isso parece bom! Eu não experimentei inventários dinâmicos, mas enquanto o hash_merging estiver habilitado, o cp-ansible deve funcionar!

Outra coisa - tive problemas com a validação de nome de host usando endereços IP, então se você está indo na direção de ativar a criptografia, provavelmente usaria nomes de host

Agrupei minhas VMs Kafka como kafka_hosts em meu inventário, portanto, alterar os valores de hosts em all.yaml se parece com isso.

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

e variáveis ​​de grupo definidas no diretório de inventário como este.

# 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  

Isso respeita todas as variáveis, exceto mapas como kafka_broker. Me dá o erro

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

Devo sempre nomear o grupo como kafka_broker ?

Desculpe, sou um novato no ansible. Talvez eu esteja faltando alguns princípios básicos.

Passou pela mesma coisa aqui - @sandeeprapido - você precisa definir o namespace de seus hosts para kafka_broker para que isso funcione.

Você ainda precisa de ajuda nisso?

Você pode adicionar tarefas de depuração no código para ver como seus vars estão configurados. Eu adicionaria isso em algum lugar

- debug: var=kafka_broker

Verifique também se o hash_merging está sendo usado com o ansible.cfg

Eu precisava nomear o grupo de host como algo diferente de kafka_broker. Então, fiz uma mudança no manual. Eu adicionei uma variável kafka_broker_host_group que contém o nome do grupo de hosts.
E fez alterações nos arquivos de funções como abaixo.
bootstrap.servers={% for host in groups['kafka_broker'] %} mudou para bootstrap.servers={% for host in groups[kafka_broker_host_group] . Isso me ajudou a ter nomes de grupo personalizados.
E sim, definir hash_behaviour como merge me ajudou a resolver o bug original para o qual abri esse problema.

Obrigado pela ajuda :)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

OneCricketeer picture OneCricketeer  ·  7Comentários

Fobhep picture Fobhep  ·  12Comentários

LGouellec picture LGouellec  ·  4Comentários

OneCricketeer picture OneCricketeer  ·  6Comentários

Fobhep picture Fobhep  ·  12Comentários