使用 ansible-playbook 选择特定的 host/host-group

Choose a specific host/host-group using ansible-playbook

使用 ansible-playbook 命令,我们可以为清单中的所有主机执行剧本,我有一个剧本可以从网络服务器中删除缓存。但我不应该删除特定机器上的缓存,除非开发人员要求这样做。

但是通过使用 ansible-playbook 我无法从清单中选择特定的主机。但是我可以使用一些语法作为 ansible-playbook somebook.play -i hostname, 但这会查找 DNS 条目并相应地执行但不会检查清单文件。

另一种方法是为每个主机创建单独的清单文件,并根据开发人员请求的主机调用它们,我不知道这是多少推荐的方法。

最后一种方法 AFAIK 是通过 Python 使用 ansible.runner 并在主机名处使用模式并调用 python 程序。

感谢阅读我的长文post。

除此之外,您还知道在执行剧本时从库存中挑选特定 host/host-group 的其他方法吗?

我想知道任何其他方法,但只使用 ansible-playbook 和清单文件。

But by using ansible-playbook I can't pick a specific host from the inventory.

是的,你可以 -- 执行 ansible-playbook --help 命令来显示帮助:

Usage: ansible-playbook playbook.yml

Options:

<--- cut --->

  -l SUBSET, --limit=SUBSET
                        further limit selected hosts to an additional pattern

<--- cut --->

如果您想知道模式是什么 -- patterns 上有一个帮助页面。