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

时间:2017-11-20 11:01:58

标签: ansible ansible-inventory

我正在使用vmware_guest模块创建一堆vms。

无论如何都要使用主机名和IP地址的模式吗?

例如,我想创建5个带有主机名/ IP的主vms,如:

  • master1 10.123.0.1
  • master2 10.123.0.2
  • master3 10.123.0.3

所以库存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播放游戏?例如,如果相同的库存yaml具有另一个父子组Bono:masterNodes

1 个答案:

答案 0 :(得分:1)

  

无论如何都要使用主机名和IP地址的模式吗?

没有。相反,Ansible允许运行脚本来生成库存 - 在Python中实现一个循环填充库存主机名和IP地址的循环是很简单的(显然早在July 2013就已经明确了,尽管在同一个线程中有人建议a workaround)。

  

另外,有没有办法为特定的父母:儿童组运行剧本?

没有。 Ansible库存中没有层次结构;命名空间是扁平的;没有儿童团体; Ansible在主机/组集上运行。

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