Я испытываю затруднения при нахождении решения в Марионеточных документах. Я пытаюсь определить переменную в шаблоне Puppet. Например:
Если class graylog2
и apache
определяются в разделе класса узла затем, шаблон помещает эти переменные в файл конфигурации:
# 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% уверен, но я предполагаю, что версия в качестве примера не работала бы. Также, как я мог добраться @server_gl
от graylog2 module
таким образом, это не должно быть определено в 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 %>