Я хочу написать роль Ansible, чтобы иметь возможность alter
заданную тему Кафки. Я использую словарь пар ключ / значение.
Модуль command
затем используется для выполнения сценария Kafka, который принимает строку значений, разделенных запятыми. Например, используйте app_kafka_topic
список:
---
app_kafka_topic:
cleanup.policy :
- "delete"
retention.ms :
- "146800000"
partitions :
- "6"
replication-factor :
- "2"
и создайте string
:
"cleanup.policy = удаление, retention.ms = 146800000, перегородки = 6, репликация-фактор = 2"
Это то, что я имею до сих пор.
- name: Reading the Default Topic Properties
set_fact:
app_kafka_topic_properties_dicts: |
{% set res = [] -%}
{% for key in app_kafka_topic.keys() -%}
{% for value in app_kafka_topic[key] -%}
{% set ignored = res.extend([{'topic_property': key, 'value':value}]) -%}
{%- endfor %}
{%- endfor %}
{{ res }}
- name: Create Topic with Default Properties
command: "{{ kafka_bin_dir }}/{{ kafka_config_script }}
--zookeeper {{ prefix }}-kafka-{{ Kafka_node }}.{{ DNSDomain}}:{{ zookeeper_port }}
--entity-type topics
--alter
--entity-name {{ kafka_topic }}
--add-config
{{ properties }}"
with_items: "{{ app_kafka_topic_properties_dicts }}"
register: createdTopic
vars:
properties: |-
{% for key in app_kafka_topic.keys() %}
{% for value in app_kafka_topic[key] %}
"{{ key }}={{ value }}"
{%- endfor %}
{%- endfor %}
Однако переменная properties
не объединяет значения до конца строки. Есть ли способ добавить значения в строку и разделить их запятой?