Запустить произвольный код ruby во время исполнения кукол?
Я работаю над расширением модуля puppetlabs-mongodb для обеспечения возможности аутентификации пользователей. Проблема состоит в том, что mongo изменил свой механизм для включения аутентификации пользователей между версией 2.2 и версией 2.4, и поэтому должен быть выполнен отдельный код, чтобы предоставить учетные данные аутентификации пользователя базе данных.
Моя первоначальная мысль состояла в том, чтобы создать собственный факт фактора, который в основном захватывал результат mongod --version
, но, похоже, факты фактора загружаются до того, как будет выполнен манифест марионетки. Есть ли способ выполнить произвольный код во время выполнения во время выполнения марионетки, чтобы я мог получить доступ mongod --version
и решить, какой метод использовать для включения аутентификации пользователя?
Примечание. Один из подходов заключается в том, чтобы куколки запускали один сценарий для создания учетных данных пользователя и чтобы сценарий обнаруживал
mongod --version
во время выполнения. Это не похоже на марионеточный способ ведения дел, но, возможно, я не в этом уверен. Каков наилучший способ удовлетворить потребность в динамическом доступе к переменным в puppet / facter?
2 ответа
Слово от @puppetlabs гласит, что вы не можете динамически запускать код ruby (или любой другой код) во время запуска кукол. "Правильный" способ сделать это в примечании выше с exec
заявление, которое динамически проверяет версию mongodb. Для получения подробной информации о реализации см. Manifes / add_user.pp и связанные шаблоны / add_user *.erb.
Если у кого-то есть более "щенячий" метод для этого, я бы хотел узнать об этом!
Просто поместите ваш код Ruby в шаблон ERB и используйте template("${module_name}/templ.erb")
вернуть вашу версию строки.