Назад | Перейти на главную страницу

Шаблон марионетки, если определен синтаксис

Мне не удается найти решение в документах Puppet. Я пытаюсь определить переменную в шаблоне 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 %>