使用ansible循环创建kafka主题

问题描述 投票:0回答:1

我尝试使用 ansible playbook 循环 group_var 中的以下变量来创建 kafka 主题,如下所示

alltopics:
- topicname: abc1
    replication: 3
    partitions : 3
- topicname: xyx
    replication: 3
    partitions : 3
- topicname: qwe
    replication: 3
    partitions : 3

我有这样的任务

- name: create topic
  shell: kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 2 --topic abc

我无法创造美好的事物

loops apache-kafka ansible ansible-2.x ansible-inventory
1个回答
0
投票

首先,您应该修复 YAML 的缩进以使其有效:

alltopics:
  - topicname: abc1
    replication: 3
    partitions: 3
  - topicname: xyx
    replication: 3
    partitions: 3
  - topicname: qwe
    replication: 3
    partitions: 3

然后,在您的任务中,您应该使用循环来迭代哈希列表(我使用多行 YAML 格式以获得更好的可读性):

    - name: Create Kafka topics
      shell: >
        kafka-topics.sh
          --create
          --zookeeper localhost:2181
          --replication-factor {{ item.replication }}
          --partitions {{ item.partitions }}
          --topic {{ item.topicname }}
      loop: "{{ alltopics }}"

如果您正在开发实际应用程序,我建议考虑使用现有工具,例如 ansible-kafka-admin

© www.soinside.com 2019 - 2024. All rights reserved.