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

Использовать определенный ресурс для заполнения файла шаблона

Я работаю над тем, чтобы сделать нашу марионеточную инфраструктуру более динамичной, где я могу добавить любое количество узлов, и они будут автоматически применяться в другой конфигурации узлов.

Пример: у меня есть X хостов, на которых запущено приложение Java, которые определены нашим javaapp модуль со следующим определением в нем (упрощенно):

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

Они определены в файле site.pp следующим образом:

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

У нас есть обратный прокси-сервер nginx перед этими серверами приложений, где мне нужно перенаправлять запросы на ряд серверов. В настоящее время мой шаблон nginx выглядит так:

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

Где @ host_app_01 и @ host_app_02 определены глобально в файле site.pp

Я хотел бы собрать массив узлов с определенным именем сайта javaapp и использовать его в шаблоне nginx. Что-то вроде этого псевдокода:

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

Я немного читал об экспортируемых ресурсах, но не могу понять, подходит ли это для данной ситуации?

Можно ли вообще марионеткой делать?

Мы используем марионеточную версию 3.7.5.

Да, экспортируемые ресурсы - очень подходящий шаблон проектирования. Однако шаблон не может напрямую использовать ресурсы (импортированные или иным образом) из текущего каталога.

Ваш лучший звонок будет одним из concat модули. Попросите ваши определенные типы экспортировать фрагменты concat для ваших приложений. Вместо file который использует шаблон для своего content, использовать concat ресурс.