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

Лучший способ получить список узлов внутри шаблона Puppet

Каков рекомендуемый способ получить список всех узлов из шаблона Puppet?

Допустим, у меня есть балансировщик нагрузки под управлением Nginx. Внутри шаблона я хочу сгенерировать список внутренних серверов. Для простоты предположим, что у этих серверов приложений есть имя хоста, соответствующее 'appserver *'.

В настоящее время я определяю массив внутри site.pp с каждым сервером приложений и использую его следующим образом:

upstream www.foobar.com {
  <% appservers.each do |val| -%>
  server <%= val %>:80;
  <% end -%>
}

Я хотел бы покончить с этим вручную определенным массивом и вместо этого запросить Puppet.

Я не думаю, что есть один рекомендуемый способ. Думаю, это зависит от вашей настройки.

Есть несколько способов добиться этого. Ты можешь использовать экспортированные ресурсы и запрос puppetDB.

Метод, который я предпочитаю, поскольку я уже использую Форман, - это использовать мастеров. функция парсера чтобы получить список узлов от мастера.

Итак, в своем манифесте вы можете сделать что-то вроде:

$appservers = foreman("hosts", 'hostgroup = appservers')

Предполагая, что ваши серверы приложений находятся в группе хостов Foremans, называемой «серверы приложений». Вот это сообщение в блоге, которое объясняет это.

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

Другой способ - использовать Hiera.