排除 Ansible 清单中的主机子集

neu*_*lux 5 ansible ansible-inventory

我有一组vm2-prod通过命名的主机vm14-prod。这些在 Ansible 主机清单中分组为vmware_hosts。我想排除这样的主机子集:

- name: testing play
  hosts: vmware_hosts:!vm[8-10]-prod
Run Code Online (Sandbox Code Playgroud)

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

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

怎么了?

Zei*_*tor 5

根据 Ansible 文档

=> 到底是哪一个?

我完全记得看到这个符号记录用于在库存中添加范围,但根本没有用于主机模式。

也许您对主机模式中的正则表达式的使用感到困惑,这显然应该满足您的要求(并且在这种情况下看起来非常相似):

hosts: vmware_hosts:!~vm[8-10]-prod
Run Code Online (Sandbox Code Playgroud)

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


The*_*ter 0

我认为你只能排除主机组。就像Ansible 文档中一样,只有带有*符号的模式示例,因此vm*-prod是可能的。使用您的语法,您只能选择已定义组的行,例如在模式中使用组位置。

  • 您绝对可以排除模式中的各个主机。 (2认同)