首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排除Ansible清单中的主机子集

排除Ansible清单中的主机子集
EN

Stack Overflow用户
提问于 2020-12-03 23:35:01
回答 3查看 1.7K关注 0票数 2

我有一组通过vm14-prod命名为vm2-prod的主机。这些在Ansible hosts inventory中分组为vmware_hosts。我想排除如下所示的主机子集:

代码语言:javascript
复制
- name: testing play
  hosts: vmware_hosts:!vm[8-10]-prod

根据Ansible文档,这似乎应该通过vm9-prod排除vm7-prod。然而,我得到“无法匹配主机模式,忽略vm8-10-prod”,就像它读取的是文字主机名"vm8-10-prod“而不是数组。

我也尝试过vm[8:10]-prod,但它给出了相同的错误。

怎么啦?

EN

回答 3

Stack Overflow用户

发布于 2020-12-04 00:33:09

根据Ansible docs的

=>到底是哪一个?

我清楚地记得看到过为adding ranges in inventories记录的这种表示法,但根本不是为hosts patterns记录的。

也许你把use of regexps in host patterns搞糊涂了,它看起来应该能满足你的需求(在本例中看起来非常相似):

代码语言:javascript
复制
hosts: vmware_hosts:!~vm[8-10]-prod

同时,虽然上面的内容可以方便地在命令行上指定特定剧本运行的限制,但对于更常规的使用,我建议将这些计算机添加到其他组中,这样更容易排除和长期维护。

票数 3
EN

Stack Overflow用户

发布于 2020-12-04 00:10:10

我认为您只能排除主机组。就像在Ansible docu中一样,只有带有*符号的模式示例,所以vm*-prod是可能的。使用您的语法,您只能选择已定义组的行,例如Using group position in patterns

票数 0
EN

Stack Overflow用户

发布于 2020-12-15 04:35:48

这是通过一个简单的语法更改来解决的,正如前面的答案所引用的:

代码语言:javascript
复制
hosts: vmware_hosts:!~vm(8|9|10)-prod

来自不同的CM背景(在我的例子中是xCAT),从Ansible文档中看不出主机阵列应该使用管道而不是方括号。我可以使用这个语法在我的剧本中排除多个单独的主机。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65129063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档