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_kafka
和 dc2_kafka
之类的东西?
我在 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_kafka
和 dc2_kafka
之类的东西?