Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数追加到Ansible中命令模块的末尾_Ansible_Jinja2 - Fatal编程技术网

将参数追加到Ansible中命令模块的末尾

将参数追加到Ansible中命令模块的末尾,ansible,jinja2,Ansible,Jinja2,我想写一个Ansible角色来配置卡夫卡主题。 我想使用Kafka主题属性及其值的字典,并使用Ansible中的命令模块创建主题。 例如,使用默认的卡夫卡主题列表: 使用上面列出的属性创建一个主题。我已经完成了以下操作来循环属性并创建一个键/值对。 然后在命令中使用字典 但是,这不会将topic_属性和值参数附加到命令末尾。相反,该命令是按参数执行的 是否有方法将键/值对作为参数附加到命令模块,并在列表完成时执行?是。您需要以与在上面的set_fact任务中相同的方式进行循环,但是打印值而不是创

我想写一个Ansible角色来配置卡夫卡主题。 我想使用Kafka主题属性及其值的字典,并使用Ansible中的命令模块创建主题。 例如,使用默认的卡夫卡主题列表:

使用上面列出的属性创建一个主题。我已经完成了以下操作来循环属性并创建一个键/值对。 然后在命令中使用字典

但是,这不会将topic_属性和值参数附加到命令末尾。相反,该命令是按参数执行的


是否有方法将键/值对作为参数附加到命令模块,并在列表完成时执行?

是。您需要以与在上面的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 %}