Puppet:自动包含所有子类?

时间:2014-10-29 12:35:43

标签: module vagrant puppet

我正在使用vagrant和puppet(CentOs)配置多个系统。我有一个模块,应该通过主机名(模块' hosts')使它们彼此都知道。

每台机器都会生成一个名为like的子类,它有自己的主机名和ip(例如:hosts :: machine1)。

现在我的问题是它们都要包含在要执行的主机模块的init.pp中。机器名称和计数与运行不同。

目前我手动包含子类(包括hosts :: machine1,包括hosts :: machine2)。

现在问我的问题: 是否有可能包含模块的所有子类?或文件夹?

或者解决这个问题的更好方法是什么?

迎接

2 个答案:

答案 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文件中声明的资源都将得到尊重。