使用定义的资源来填充模板文件

我正在努力使我们的puppet基础结构更加dynamic,我可以添加任意数量的节点,这些节点将自动应用到另一个节点configuration中。

一个示例:我有X个运行Java应用程序的主机,这些主机由我们的javaapp模块定义,其中定义如下(简化):

define javaapp::site ( $site_name, $site_port ) { # Doing some stuff regarding deployment, service management etc here } 

这些在site.pp文件中定义如下:

 javaapp::site { 'app01': play_site_name => 'app01', play_site_port => 9100, } 

我们在这些应用程序服务器前面有一个nginx反向代理,我需要将请求转发到一系列服务器。 目前我的nginx模板如下所示:

 upstream app-hosts { server <%= @host_app_01 %>:9100; server <%= @host_app_02 %>:9100; } 

其中@ host_app_01和@ host_app_02已经在site.pp文件中全局定义

我想要做的是收集一个特定的javaapp网站名称的节点数组,并在nginx模板中使用它。 像这样的伪代码:

 upstream app-hosts { <% @host_app.each do |host| %> server <%= @host.ip %>:<%= @host.appPort %>; <% end %> } 

我已经读了一些关于出口资源,但我不明白这是否是正确的事情?

甚至可以用傀儡呢?

我们正在运行木偶版本3.7.5。

是的,出口资源是一个非常充分的devise模式。 但是,模板不能直接使用当前目录中的资源(导入或以其他方式)。

你最好的电话将是一个concat模块。 让您定义的types为您的应用程序导出concat片段。 而不是使用模板作为其contentfile ,请使用concat资源。