Назад | Перейти на главную страницу

Что определяет структуру каталогов Puppet pluginsync на клиентах?

Я использую марионетку 2.6.8. у меня есть pluginsync=true как на мастере, так и на клиенте. Я создал модуль и тип, которые живут в кукловоде по адресу:

 /etc/puppet/modules/mymodule/lib/puppet/type/mytype.rb

Синхронизация работает на клиенте, но тип заканчивается здесь, на клиенте:

 /var/lib/puppet/lib/puppet/type/mytype.rb

но я ожидал, что он будет жить здесь:

 /var/lib/puppet/mymodule/lib/puppet/type/mytype.rb

чтобы он не конфликтовал с типами из других модулей.

Должно быть, я что-то неправильно сконфигурировал, но не знаю что.

Нет, именно так Puppet выполняет синхронизацию плагинов. Эта обобщенная философия («нам все равно, что это исходит из модуля») уже была в силе, когда я писал код pluginsync, поэтому я просто использовал ее. Даже если вы поместите файлы в пространство имен, вы не сможете использовать собственные типы пространства имен, поэтому их размещение в отдельных каталогах не принесет никакой пользы. Сохраняйте уникальность ваших имен типов (возможно, добавьте к ним префикс имени модуля, как это делают большинство существующих плагинов, которые я видел), и у вас не будет проблем.

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

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

Я обнаружил ошибку в марионеточных лабораториях, https://projects.puppetlabs.com/issues/8750 проверить, не ошиблись ли мои предположения и т. д.

[и да, я бы предпочел опубликовать это как комментарий, но для этого нужна репутация, которой у меня нет - я решил, что избавлю людей от проблемы, связанной с моим исследованием этого вопроса, поскольку это не упоминается в документации]