木偶语言configuration文件编辑

我正在尝试使用syslog-ng为日志服务器和客户端创build一个木偶配方。 我知道我可以使用模板erb文件自定义configuration文件,并replaceerb文件中的某些variables。 我也知道file资源只是从源代码或模板中replace文件。

但是,我的问题是,每个客户端将有不同的要求和不同数量的文件被redirect,大多数客户端不使用系统日志API来logging他们的信息,所以我必须指定每个客户端上的每个应用程序的文件名,继续添加东西到服务器的conf文件。

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

你可以尝试创build一个像一些variables的模板

 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地址并相应地过滤消息。

在这种情况下,你应该仔细看看有问题的configuration文件,看看它是否支持某种包含目录。 也就是说,你可以把configuration文件放到一个子目录下,并指示主程序包含它。 这样每个子系统可以根据需要简单地添加configuration片段。 Syslog-ng 似乎支持这种types的设置。

如果这不是内置于有问题的应用程序,那么您可以使用基本上具有puppet的连接模式在一组configuration片段中组装客户端上的configuration。