Ansible限制不适用于组

时间:2017-08-10 19:07:37

标签: ansible ansible-inventory

我在inventories/dc

下面有两个清单

DC1

[kafka]
k1.test

DC2

[kafka]
k2.test

和jinja模板文件

test.j2

{% for item in groups['kafka'] %} {{item}} {% endfor %}

由于我的Playbook在一个集群上运行时需要其他集群的信息,我这样运行这个剧本:

ansible-playbook -i inventories/dc testplaybook.yml -u root --limit dc1

但是,这种方法的问题是groups['kafka']列出了来自两个群集的kafka。如何限制playbook只从同一个集群中列出kafka?

1 个答案:

答案 0 :(得分:1)

您可以使用play_hosts变量来检查来自groups['kafka']的主机是否在目标主机中。

{% for item in groups['kafka'] %}{% if item in play_hosts %} {{item}} {% endif %}{% endfor %}

我会考虑重构您的广告资源,以便同一组中没有2个定义。可能会有dc1_kafkadc2_kafka这样的内容吗?