Use o recurso definido para preencher o arquivo de modelo

1

Estou trabalhando para tornar a nossa infraestrutura de bonecos mais dinâmica, onde posso adicionar qualquer número de nós e estes serão aplicados automaticamente em outra configuração de nós.

Um exemplo: Eu tenho um número X de hosts executando um aplicativo Java, que são definidos pelo nosso módulo javaapp com o seguinte define nele (simplificado):

define javaapp::site (
  $site_name,
  $site_port ) {
  # Doing some stuff regarding deployment, service management etc here
}

Estes são definidos no arquivo site.pp assim:

javaapp::site { 'app01':
  play_site_name    => 'app01',
  play_site_port    => 9100,
}

Temos um proxy reverso nginx na frente desses servidores de aplicativos, no qual preciso encaminhar solicitações para um intervalo de servidores. Atualmente, meu modelo nginx tem esta aparência:

upstream app-hosts {
  server <%= @host_app_01 %>:9100;
  server <%= @host_app_02 %>:9100;
}

Onde @ host_app_01 e @ host_app_02 foram definidos globalmente no arquivo site.pp

O que eu gostaria de fazer é coletar uma matriz dos nós com um nome de site javaapp específico e usá-lo no modelo nginx. Algo parecido com este pseudo-código:

upstream app-hosts {
  <% @host_app.each do |host| %>
    server <%= @host.ip %>:<%= @host.appPort %>;
  <% end %>
}

Eu li um pouco sobre os recursos exportados, mas não consigo descobrir se é a coisa certa para essa situação?

É possível fazer com fantoche?

Estamos executando a versão fantoche 3.7.5.

    
por Frederik Nielsen 18.01.2016 / 14:54

1 resposta

1

Os recursos exportados são um padrão de design muito adequado para isso, sim. No entanto, um modelo não pode usar diretamente os recursos (importados ou não) do catálogo atual.

A sua melhor chamada será um dos módulos concat . Faça com que seus tipos definidos exportem fragmentos de concat para seus aplicativos. Em vez de um file que usa um modelo para seu content , use um recurso concat .

    
por 19.01.2016 / 10:33

Tags