Ansible 限制不适用于组

Ansible limit not working on groups

我在 inventories/dc

下有以下两个清单

dc1

[kafka]
k1.test

dc2

[kafka]
k2.test

和 jinja 模板文件

test.j2

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

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

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

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

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

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

我会考虑重构您的清单,以免同一组有 2 个定义。可能是 dc1_kafkadc2_kafka 之类的东西?