Cp-ansible: confluent.variables_handlers 角色的目的

创建于 2020-04-07  ·  9评论  ·  资料来源: confluentinc/cp-ansible

我正在尝试使用此 repo 的 5.4.1-post 分支安装融合的 Kafka 和 zookeeper。
在 confluent.zookeeper 和 confluent.kafka 角色中使用 confluent.variables_handlers 作为依赖角色的目的是什么。 这会覆盖 confluent.zookeeper/defaults/main.yaml 中的zookeeper变量,类似于 confluent.kafka /defaults/main.yaml 中的kafka_broker 。 安装kafka时出现此错误。

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

最有用的评论

它实际上应该合并字典,确保在运行 cp-ansible 时您的当前目录是 cp-ansible 本身的根目录。 这将使您获得带有hash_behaviour=mergeansible.cfg 文件

我承认,变量的位置很混乱,希望有时间改进一下

所有9条评论

它实际上应该合并字典,确保在运行 cp-ansible 时您的当前目录是 cp-ansible 本身的根目录。 这将使您获得带有hash_behaviour=mergeansible.cfg 文件

我承认,变量的位置很混乱,希望有时间改进一下

我试过了。 现在,当我运行相同的剧本时,我得到

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 VM 分组为 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吗?

抱歉,我是 ansible 的新手。 也许我缺少一些基础知识。

刚刚在这里经历了同样的事情 - @sandeeprapido - 你确实需要将你的主机命名为 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 设置为 merge 帮助我解决了我打开此问题的原始错误。

谢谢您的帮助 :)

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

a-narenji picture a-narenji  ·  5评论

LGouellec picture LGouellec  ·  4评论

Fobhep picture Fobhep  ·  12评论

OneCricketeer picture OneCricketeer  ·  6评论

Fobhep picture Fobhep  ·  7评论