[英]How to deal with two lists in Ansible?
我將使用Ansible腳本創建Kafka主題。 我為要創建的主題定義了一個YAML哈希變量:
topics:
topic1:
partitions: 1
replication_factor: 2
topic2:
partitions: 1
replication_factor: 2
在創建它們之前,我需要首先檢查主題是否存在。 我可以使用kafka-topics.sh --list --zookeeper localhost:2181
來獲取現有主題名稱的列表,然后與topics
哈希進行比較以獲取要創建的主題列表,然后調用kafka-topics.sh --create --topic name
以創建主題。
如何實現呢?
感謝linuxdynasty的回答。 但是我不想為這個簡單的任務編寫模塊。 最后,我制定了以下解決方案。 我在這里發布供人們參考。
---
- name: Get existing topic list
become_user: root
become: yes
become_method: sudo
shell: /opt/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
register: existings
- name: Print existing topic list
debug: msg="{{existings.stdout | regex_replace("\\n", " ")}}"
- name: Create topics
become_user: root
become: yes
become_method: sudo
shell: >
if [[ `echo "{{existings.stdout}}" | grep {{item.key}}` != {{item.key}} ]]; then
/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181
--topic {{item.key}} --partitions {{item.value.partitions}}
--replication-factor {{item.value.replication_factor}};
fi
with_dict: "{{kafka_topics}}"
似乎您需要創建一個kafka事實模塊。 該模塊將被稱為類似kafaka_topics_facts的名稱。 該模塊將返回主題,然后您可以從那里創建不存在的主題。 請閱讀此開發Ansible模塊
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.