根据游戏循环通过ansible主机

时间:2016-09-16 22:36:20

标签: ansible apache-kafka ansible-playbook

我已经看到了通过执行以下操作循环遍历库存文件地址的能力:

{% for url in groups['kafka'] %}
  {%- if url == ansible_fqdn or url in ansible_all_ipv4_addresses
     or ( kafka_id is defined and loop.index0 == kafka_id | int ) -%}
        broker.id={{loop.index0}}
    {% endif %}
{% endfor %}

这个想法的问题是我有几个不同的" Kafa"键入主机,每个将执行稍微不同的操作。我想知道是否有一种方法可以通过playbook传递组[' kafka'] 的变量,而不是在模板中对其进行硬编码。这样我只使用主机进行特定游戏,并且可以为所有不同游戏重复使用相同的模板。

1 个答案:

答案 0 :(得分:0)

我试图用报价包围群组[' FOO']是我的错。我能够在剧本中设置一个变量并通过执行以下操作将其传递下去:

- name: Big Tree Stitch Kafka
  hosts: kafka-bts
  vars:
    kafka_hosts: "kafka-bts"
  remote_user: centos
  become_user: root
  become: yes
  roles:
    - { role: kafka }

然后在我的jinja模板中使用它。

% for url in groups[kafka-bts] %}
  {%- if url == ansible_fqdn or url in ansible_all_ipv4_addresses
     or ( kafka_id is defined and loop.index0 == kafka_id | int ) -%}
        broker.id={{loop.index0}}
    {% endif %}
{% endfor %}