首页 > 解决方案 > 如何使用模式来指定多个清单组(不是主机)来运行剧本?

问题描述

我有几个按顺序命名的组,我想在上面运行我的剧本。我可以指定一个确切的名称或使用星号通配符,但我不能指定一个数字范围。

Group Names
group1
group2
group3 

在剧本中 -hosts: "{{ var_hosts }}"

例子:

ansible-playbook -i inventory tasks/myplaybook.yml -e 'var_hosts=group1'==> 有效

ansible-playbook -i inventory tasks/myplaybook.yml -e 'var_hosts=group*'==> 通过选择所有名为 'groups*' 的组来工作

ansible-playbook -i inventory tasks/myplaybook.yml -e 'var_hosts=group[1:3]'==> 不起作用。我得到错误:

'[WARNING]: Could not match supplied host pattern, ignoring: group'

我的谷歌搜索没有找到任何文档,说明哪些模式在组名中是合法的。有没有办法在组名中使用数字范围?

标签: ansible

解决方案


模式不是正则表达式

您可以通过在组名中添加下标来引用组内的主机:

webservers[0:2] # == webservers[0],webservers[1]

...


推荐阅读