我无法在Puppet文档中find解决scheme。 我想在Puppet模板中定义一个variables。 例如:
如果class graylog2和apache类在节点类节中定义,那么模板将这些variables放在configuration文件中:
# Apache logging local5.* @<%= @server_gl -%>:<%= @service_port_gl -%> <- This part has to inserted if defined graylog2 class and apache class in node file local5.info ~ local5.err ~ # Nginx logging local4.* @<%= @server_gl -%>:<%= @service_port_gl -%> <- This part has to be inserted if defined graylog2 class and apache class in node file local4.info ~ local4.err ~
例:
if defined (Class['apache', 'graylog2']) # Nginx logging local4.* @<%= @server_gl -%>:<%= @service_port_gl -%> local4.info ~ local4.err else # Nginx logging local4.info ~ local4.err
我不是100%确定,但我猜这个示例版本不会工作。 另外我怎么能从graylog2 module获得@server_gl ,所以它不必在syslog module定义。
解:
# Apache logging <% if classes.include?("httpd") %> local5.* @<%= scope.function_hiera(["ls_gelf_host"]) %>:<%= @service_port -%> local5.info ~ local5.err ~ <% else %> local5.info ~ local5.err ~ <% end %> # Nginx logging <% if classes.include?("nginx") %> local4.* @<%= scope.function_hiera(["ls_gelf_host"]) %>:<%= @service_port -%> local4.info ~ local4.err ~ <% else %> local4.info ~ local4.err ~ <% end %>