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

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

我正在致力于让我们的傀儡基础设施更加动态,我可以添加任意数量的节点,这些节点将自动应用于另一个节点配置。

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

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 %>
}

我读了一些有关出口资源的文章,但我不明白这是否适合这种情况?

可以用木偶来做吗?

我们正在运行 Puppet 版本 3.7.5。

答案1

导出资源是实现此目的的非常合适的设计模式,是的。但是,模板不能直接使用当前目录中的资源(导入的或其他方式)。

你最好的选择是连接模块。让定义的类型为您的应用程序导出 concat 片段。不要file使用模板content,而是使用concat资源。

相关内容