Puppet语言配置文件编辑

Puppet语言配置文件编辑

我正在尝试使用 syslog-ng 为日志服务器和客户端创建 Puppet 配方。我知道我可以使用模板 erb 文件来自定义配置文件,并替换 erb 文件中的某些变量。我还知道资源file只是替换源或模板中的文件。

但是,我的问题是每个客户端都有不同的要求和需要重定向的不同数量的文件,并且大多数客户端不使用 syslog API 来记录其信息,因此我必须在每个客户端上为每个应用程序指定文件名,并且因此必须继续将内容添加到服务器配置文件中。

我在 puppet 中找不到任何可以帮助我生成或将信息添加到现有 syslog-ng.conf 文件中的循环功能。我看到的只是资源file将替换现有资源,除非我使用 做一些聪明的事情exec

答案1

您可以尝试创建带有一些变量的模板,例如

source s_<%= localhost_name%> {
tcp(ip(0.0.0.0)
port(<%= log_port%>));
};

template t_<%= localhost_name%> {
template ("$MSGHDR$MSG\n");
template_escape(no);
};

destination d_<%= localhost_name%>  {
file("<%= log_file%>" template(t_<%= localhost_name%>));
};

log {
source(s_<%= localhost_name%>);
destination(d_<%= localhost_name%>);
};

这将生成一个文件,该文件将监听 syslog 端口上的所有 TCP 地址并相应地过滤消息。

答案2

在这种情况下,您应该仔细查看相关配置文件,看看它是否支持某种包含目录。也就是说,您可以将配置文件放入子目录中,并指示主程序将其包含。这样,每个子系统都可以根据需要简单地添加配置片段。Syslog-ng 确实似乎支持这种类型的设置。

如果该应用程序没有内置此功能,那么您可以使用连接模式基本上,你让 Puppet 从一堆配置片段中在客户端组装配置。

相关内容