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

Puppet - импорт локально написанных (неустановленных) функций модуля

Скажем, у меня есть два локально существующих модуля, которых нет в Forge или в настраиваемом репозитории, подобном Forge. Эти репозитории никогда не будут установлены через командную строку, поскольку они являются частью более крупного развертывания, которое не может использовать команды установки, подобные Forge, - они помещаются туда вручную или путем клонирования репо.

ModuleA определяет функцию в своем functions папка и может быть вызвана в рамках ModuleA. Все хорошо.

ModuleB пытается вызвать функцию из ModuleA и терпит неудачу как из-за того, что модуль не установлен и не доступен для манифеста JSON.

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

Выяснили это - если вы хотите импортировать функции для модуля в то же пространство, все, что вам нужно сделать, это включить модуль в dependencies в metadata.json файл для модуля, который импортирует (ModuleB в моем вопросе выше). Использование manifest в их документации сбивает с толку - включая его в metadata было бы правильнее.

Итак, узел зависимости в metadata.json файл будет чем-то вроде

  "dependencies": [
    { "name":"puppetlabs/apt","version_requirement":"6.0.0" },
    { "name": "mycompany/moduleb", "version_requirement": "> 0.0.1" }
  ]

с moduleb содержащий импортируемые функции. Это, вероятно, означает, что вы не можете правильно использовать Кузницу Марионеток, но если вы столкнетесь с этой проблемой, вы, вероятно, не сильно потеряете там.