лучшие практики марионеток: совместное использование переменных между профилями

Я использую подход ролей и профилей для моего текущего марионеточного проекта.

Лучшие практики марионеток говорят мне:

  • Показать все необходимые параметры профиля в списке параметров основного класса.
  • Выполнить hiera ищет для заполнения этих параметров (со значениями по умолчанию в модуле hiera)
  • Не обращаться к переменным в области других модулей / профилей
  • Будьте СУХИМ (не повторяйтесь)

Теперь я сталкиваюсь с следующая проблема (с использованием puppet 5.5):

У меня есть один базовый профиль, который включается всеми узлами (настройка apt, установка часового пояса, серверов времени и т. д.). Затем у меня есть несколько профилей для конкретных приложений (например, один для настройки IIS, один для настройки haproxy и т. Д.). Теперь я хотел бы добавить сервер журналов в свои профили приложений. Конечно, я рассчитываю указать сервер журналов только один раз в иерархии (быть СУХИМ), но использовать его во всех профилях.

Мой первый подход - добавить параметр сервера журнала в список параметров моего базового профиля, а затем получить к нему доступ из профили приложений с использованием ограниченного доступа к переменным. Но это противоречит лучшим практикам, поскольку добавляет скрытый интерфейс / зависимость между модулями.

Другой подход, который я могу придумать, - это ввести общую переменную hiera, которую я ищу с помощью явного поиска. Например:

class profile::haproxy(
   Stdlib::Host $log_server = lookup('common::log_server'),
) {}

Мне это тоже кажется подозрительным.

Итак, мой вопрос: как мне использовать переменные между модулями / профилями, не нарушая передовых практик?

0
задан 6 February 2019 в 19:13
1 ответ

Я бы использовал интерполяционную функцию в самой hiera:

common::log_server: foo
profile::haproxy::log_server: "%{lookup('common::log_server')}"
profile::iis::log_server: "%{lookup('common::log_server')}"

Это сохраняет профили независимыми и поддерживает DRY.

Вот кукольная документация для этой техники.

0
ответ дан 5 December 2019 в 04:15

Теги

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