Конфигурация среды в марионетке

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

Каждая среда имеет один или несколько серверов. В шаблоне используются переменные, основанные на этих средах, и это гарантирует использование одного и того же файла шаблона во всех средах вместо использования разных файлов, определяющих среду

До сих пор я узнал, что мы можем использовать файлы типа {environment} .yaml в heira, что я не предпочитаю, так как я не Я не хочу поддерживать два набора файлов для таких сред, как production.yaml и qa.yaml

Как лучше всего реализовать этот сценарий?

  1. Я считаю, что мы назначаем среду хоста в /etc/puppet/manifest/site.pp
  2. Где мы должны поддерживать переменные среды (например, domain = mysite.qa.example.com). Упаковано ли это в фактах внутри модуля на основе среды из site.pp для узла или поддерживается как конкретная конфигурация узла в /etc/facter/facts.d/ на каждом узле?

Есть ли рабочий пример для над.

0
задан 15 May 2017 в 15:56
1 ответ

Правильный способ управления данными, относящимися к среде, - это использовать 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
0
ответ дан 5 December 2019 в 08:10

Теги

Похожие вопросы