Запустить произвольный код 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") вернуть вашу версию строки.

Другие вопросы по тегам