Я хочу написать роль Ansible, чтобы иметь возможность настраивать тему Kafka.
Я хочу использовать словарь свойств темы Kafka и их значений и использовать модуль command
в Ansible для создания темы.
Например, используйте default_kafka_topic
список:
---
default_kafka_topic:
partitions :
- "6"
replication-factor :
- "2"
для создания темы с перечисленными выше атрибутами. Я сделал следующее, чтобы пройтись по атрибутам и создать пару ключ / значение.
А затем используйте словарь в command
.
- set_fact:
dafault_kafka_topic_properties_dicts: |
{% set res = [] -%}
{% for key in default_kafka_topic.keys() -%}
{% for value in default_kafka_topic[key] -%}
{% set ignored = res.extend([{'topic_property': key, 'value':value}]) -%}
{%- endfor %}
{%- endfor %}
{{ res }}
- name: Create Default Topic
command: "{{ kafka_bin_dir }}/{{ kafka_topic_script }} --zookeeper {{ prefix }}-kafka-{{ Kafka_node }}.{{ DNSDomain}}:{{ zookeeper_port }} --if-not-exists --create --topic topic_name --{{ item.topic_property }} {{ item.value }}"
with_items: "{{ dafault_kafka_topic_properties_dicts }}"
register: createdTopic
Однако это не добавит аргументы topic_property
и value
к концу command
. Вместо этого command
выполняется для каждого аргумента.
Есть ли способ добавить пары ключ / значение в качестве аргументов в модуль command
и выполнить, когда список будет завершен?