Каков рекомендуемый способ получить список всех узлов из шаблона 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.