具有主机名和 IP 地址模式的清单

Inventory with both a hostname and IP address pattern

我正在使用 vmware_guest 模块创建一堆虚拟机。

主机名和 IP 地址都可以使用某种模式吗?

例如,我想用 hostname/IP 创建 5 个主虚拟机,例如:

所以库存 yaml 包含如下内容: all: children: Elvis: children: masterNodes: hosts: master[1-5]: ansible_host: 10.123.0.[1-5] slaveNodes: hosts: slave[1-10]: ansible_host: 10.124.0.[1-10]


此外,有没有办法为特定的 parent:child 组 运行 编写剧本? 我怎样才能 运行 只为 Elvis:masterNodes 玩一出戏?例如,如果同一个 inventory yaml 有另一个父子组 Bono:masterNodes

Is there anyway to use a pattern for both the hostname and IP address?

没有。相反,Ansible 允许 运行 使脚本生成清单 - 在 Python 中实现一个循环填充清单主机名和 IP 地址是微不足道的(显然早在 July 2013, although in the same thread someone suggested a workaround).

Also, is there a way to run a playbook for a specific parent:child group?

没有。 Ansible 清单中没有层次结构;命名空间是扁平的;没有子组; Ansible 在 host/group 集合上运行。

实际上,您不能拥有同名的不同(子)组。这些(子)组的内容将被合并。因此,如果 Elvis 包含一个组 masterNodes 并且您使用 hosts:Elvis 声明执行一个游戏,它将 运行 在为 masterNodes 定义的所有主机上的任何地方(包括 Bono:masterNodes).