我正在使用vagrant和puppet(CentOs)配置多个系统。我有一个模块,应该通过主机名(模块' hosts')使它们彼此都知道。
每台机器都会生成一个名为like的子类,它有自己的主机名和ip(例如:hosts :: machine1)。
现在我的问题是它们都要包含在要执行的主机模块的init.pp中。机器名称和计数与运行不同。
目前我手动包含子类(包括hosts :: machine1,包括hosts :: machine2)。
现在问我的问题: 是否有可能包含模块的所有子类?或文件夹?
或者解决这个问题的更好方法是什么?
迎接
答案 0 :(得分:0)
我不知道Vagrant是否可以与PuppetDB交谈。如果可以,您应该使用exported resources来实现此目的。
每个节点都会导出自己的条目
@@host { $fqdn: ip => $ipaddress, tag => 'my-cluster' }
每个笔记都会导入所有条目
Host<<| tag == 'my-cluster' |>>
# also realize own export:
Host<| tag == 'my-cluster' |>
答案 1 :(得分:0)
您不需要在类中生成Puppet代码。您可以改为生成顶级代码。
# manifests/machine1.pp
host { 'machine1': ip => 'x.x.x.x' }
确保将Vagrant配置为使用整个manifests/
目录作为清单。然后,所有在包含的.pp
文件中声明的资源都将得到尊重。