傀儡模板,如果定义的语法

我无法在Puppet文档中find解决scheme。 我想在Puppet模板中定义一个variables。 例如:

如果class graylog2apache类在节点类节中定义,那么模板将这些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 %>