将参数追加到Ansible中命令模块的末尾
我想写一个Ansible角色来配置卡夫卡主题。 我想使用Kafka主题属性及其值的字典,并使用Ansible中的命令模块创建主题。 例如,使用默认的卡夫卡主题列表: 使用上面列出的属性创建一个主题。我已经完成了以下操作来循环属性并创建一个键/值对。 然后在命令中使用字典 但是,这不会将topic_属性和值参数附加到命令末尾。相反,该命令是按参数执行的将参数追加到Ansible中命令模块的末尾,ansible,jinja2,Ansible,Jinja2,我想写一个Ansible角色来配置卡夫卡主题。 我想使用Kafka主题属性及其值的字典,并使用Ansible中的命令模块创建主题。 例如,使用默认的卡夫卡主题列表: 使用上面列出的属性创建一个主题。我已经完成了以下操作来循环属性并创建一个键/值对。 然后在命令中使用字典 但是,这不会将topic_属性和值参数附加到命令末尾。相反,该命令是按参数执行的 是否有方法将键/值对作为参数附加到命令模块,并在列表完成时执行?是。您需要以与在上面的set_fact任务中相同的方式进行循环,但是打印值而不是创
是否有方法将键/值对作为参数附加到命令模块,并在列表完成时执行?是。您需要以与在上面的set_fact任务中相同的方式进行循环,但是打印值而不是创建字典 甚至可以代替这个任务:
- 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 {{ properties }}"
register: createdTopic
vars:
properties: |-
{% for key in default_kafka_topic.keys() %}
{% for value in default_kafka_topic[key] %}
--{{ key }} {{ value }}
{%- endfor %}
{%- endfor %}
如果您想处理dafault_kafka_主题_属性_dicts而不是原始数据,请相应地修改循环。太好了,这就是解决方案。我应该想到这一点。
- 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
- 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 {{ properties }}"
register: createdTopic
vars:
properties: |-
{% for key in default_kafka_topic.keys() %}
{% for value in default_kafka_topic[key] %}
--{{ key }} {{ value }}
{%- endfor %}
{%- endfor %}