我正在编写清单以在我们的环境中配置NXLog。
我们的想法是打电话给'模块'类似于客户端上的collectd,例如:
nxlog::plugins::syslog
和/或nxlog::plugins::nginx
等等
我陷入困境的步骤是在配置文件的末尾构建路由,最后一行必须包含syslog, nginx
作为字符串值。
最初我想过使用诸如$ input + = [$ input]之类的东西,并在每个清单中设置$ input的值。然后用逗号连接数组来创建一个字符串,但是进一步阅读这个论坛强烈暗示这不起作用。
我想过使用内联模板<%= input.flatten.join(',') %>
,但似乎其他人已经在较旧的帖子中尝试了这一点而没有成功。
有没有办法从导出资源中的类似变量动态建立字符串值?
答案 0 :(得分:0)
我不知道你读了什么,但<%= input.flatten.join(',') %>
工作正常。
foo.pp:
$input = ['a', 'b', 'c']
$output = inline_template('<%= @input.flatten.join(",") %>')
notice($output)
puppet apply foo.pp:
Notice: Scope(Class[main]): a,b,c
Notice: Compiled catalog for centos-72-x64.home in environment production in 0.01 seconds
Notice: Finished catalog run in 0.01 seconds
答案 1 :(得分:0)
有没有办法从导出资源中的类似变量动态建立字符串值?
我不知道有任何这样的方式,总的来说,从声明的资源中提取属性值是不好的形式。在Puppet 4之前,无论所涉及的资源是具体的,虚拟的还是导出的,它都是不可能的。
相反,您可以考虑生成所需的配置作为收集和应用导出资源的效果,这可能需要使用与您现在不同的资源类型。例如,您可以通过Concat
模块管理目标文件,并让导出的资源成为Concat::Fragment
的实例,其中包含所需目标内容的实际部分。如果目标配置可以合理地分配到多个文件中,这样会更容易一些,这样您就可以使用File
s来表示导出资源的类型,但这种方式可以适用于您。< / p>
答案 2 :(得分:0)
如果有其他人碰到这个 - 这就是我修复它的方法,请注意,必须为此运行PuppetDB ...
df.groupby(id)
这将创建一个逗号分隔的数组字符串。 我必须包含排序,否则Puppet会根据客人的最后一次登记返回字符串,排序会消除影响更改的可能性。