У меня есть собственный модуль марионеток для настройки веб-сервера Apache, и я использую шаблоны для копирования конфигураций. У нас есть разные среды, такие как производство, контроль качества, интеграционное тестирование.
Каждая среда имеет один или несколько серверов. В шаблоне используются переменные, основанные на этих средах, и это гарантирует использование одного и того же файла шаблона во всех средах вместо использования разных файлов, определяющих среду
До сих пор я узнал, что мы можем использовать файлы типа {environment} .yaml в heira, что я не предпочитаю, так как я не Я не хочу поддерживать два набора файлов для таких сред, как production.yaml и qa.yaml
Как лучше всего реализовать этот сценарий?
Есть ли рабочий пример для над.
Правильный способ управления данными, относящимися к среде, - это использовать Hiera. Цель Hiera - разделить данные конфигурации (например, домены, IP-адреса) и логический код Puppet. Если у вас похожие среды, ожидается дублирование конфигурации.
Вы можете использовать статический факт для определения среды и использовать % {:: environment}
(для Puppet3) или % { fact.environment}
(для Puppet4), чтобы получить доступ к нему в вашей структуре Hiera.
Ваши модули должны использовать параметризацию, чтобы позволить Hiera передавать значения в классы.
Чтобы сохранить статический факт, создайте файл в /etc/facter/facts.d
(при необходимости создайте каталог) с содержимым environment = production
, например:
odin ~ # echo 'environment=production' >> /etc/facter/facts.d/env.txt
odin ~ # facter -p environment
production