Я унаследовал модуль, содержащий инструкцию 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
является подмодулем модуля, из которого вы включаете. Если нет, то проблема связана с чем-то другим; можете ли вы предоставить дополнительную информацию о том, какие изменения вы внесли?