Я хотел бы использовать функцию среды Puppet в своих ... средах. Мы различаем среды по имени хоста, например prod-web1, stg-web1. Я знаю, что могу использовать регулярное выражение для сопоставления с ними в одной среде, но я бы предпочел использовать фактические функции среды, чтобы позволить обновлениям модулей распространяться через каждую среду.
Насколько я понимаю, это можно сделать двумя способами, и у обоих есть некоторые проблемы;
-Я могу установить переменную среды в конфигурации марионеточного агента. Это требует взаимодействия с каждым хостом. Очевидно, этим можно тривиально управлять с помощью Puppet, но при первом запуске будут применяться производственные конфигурации по умолчанию, и я бы предпочел, чтобы это не было так.
-Я могу определить переменную среды при запуске агента, но мне нужно было бы вставить агент в cron, чтобы указать это, и я потеряю преимущества встроенного расширения марионетки.
Как я могу привязать ящик к среде на основе имени хоста?
Оба варианта.
Для этого я использую Puppet, управляющий puppet.conf
, и данные Hiera для узла, настроенного с той средой, в которой он должен находиться (тогда как вы будете использовать регулярное выражение в имени хоста, чтобы определить это).
Чтобы избежать проблемы применения производственной конфигурации при первом запуске, я не позволяю ей выполнять запуск, пока я не смогу запустить этот первый запуск вручную (не подписывая сертификат, пока я не буду готов), а затем выполнив первый бежать с puppet agent --test --environment staging
- это будет явно выполнять промежуточную среду для этого прогона, а также изменить puppet.conf
с правильной конфигурацией для будущих запусков.