我已经看到了通过执行以下操作循环遍历库存文件地址的能力:
{% 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'] 的变量,而不是在模板中对其进行硬编码。这样我只使用主机进行特定游戏,并且可以为所有不同游戏重复使用相同的模板。
答案 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 %}