从Puppet模板中获取所有节点列表的build议方法是什么?
假设我有一个运行Nginx的负载平衡器。 在模板内部,我想生成后端服务器列表。 为了简单起见,假设这些应用程序服务器具有与“appserver *”匹配的主机名。
目前,我在每个应用程序服务器的site.pp中定义一个数组,并使用它,如下所示:
upstream www.foobar.com { <% appservers.each do |val| -%> server <%= val %>:80; <% end -%> }
我想取消那个手动定义的数组,而是查询Puppet。
我不认为有一个推荐的方法。 这取决于你的设置我猜。
有几种方法来实现这一点。 您可以使用导出的资源并查询puppetDB 。
我更喜欢的方法,因为我已经使用了Foreman,是使用foremans parsing器函数从工头获取节点列表。
所以在你的清单中,你可以做一些事情:
$appservers = foreman("hosts", 'hostgroup = appservers')
假设您的应用程序服务器位于Foreman主机组calles的“appservers”中。 这是一个博客文章,解释它。
另一种方法是将“appserver”列表存储在文本文件或数据库中,然后编写自己的函数来检索列表。 正如你所看到的,编写parsing器函数很简单。
另一种方法是使用Hiera 。