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

в марионетке, в чем разница между «include 'module :: config'» и «include ':: module :: config'»?

Я унаследовал модуль, содержащий инструкцию include

include '::module::config'

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

    err: Could not retrieve catalog from remote server: Error 400 on SERVER: 
    Puppet::Parser::AST::Resource failed with error ArgumentError: Could not 
    find declared class ::module::config at /home/user/svn-workspace/puppet
    /user/modules /module/init.pp:28 on node host.acme.com

если я не изменю его на:

include 'module::config'

затем он снова начинает работать.

С помощью :: в начале указывает верхнюю область видимости.

Если ваши классы имеют нормальную структуру, это не имеет значения. Это может иметь значение, если у вас есть классы с конфликтами имен; например, если у вас есть класс в module::stuff и модуль с именем stuff, затем include stuff изнутри module::things будет включать module::stuff вместо того stuff.

Итак, используя include ::stuff - это обходной путь, сообщающий поиску, что вам нужна максимальная область видимости. Этот обходной путь задокументирован Вот.


Итак ... взгляните на структуру вашего модуля и посмотрите, module::config является подмодулем модуля, из которого вы включаете. Если нет, то проблема связана с чем-то другим; можете ли вы предоставить дополнительную информацию о том, какие изменения вы внесли?