使用 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 上有一个帮助页面。
使用 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 上有一个帮助页面。