我继承了一个包含include语句的模块
include '::module::config'
但在编辑了一些看似不相关的内容之后,它就不再起作用了,并且 Puppet 抱怨说:
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'
然后它又开始工作了。
答案1
::
在开始时使用指定顶部范围。
如果您的类是按照正常方式构造的,那么这绝不会有影响。如果您的类存在名称冲突,那么这可能会有影响;例如,如果您有一个位于的类module::stuff
和一个名为的模块stuff
,那么include stuff
from withinmodule::things
将包含module::stuff
而不是stuff
。
因此,使用include ::stuff
是一种解决方法,告诉查找您想要顶部范围。此解决方法已记录这里。
因此...查看一下您的模块结构,看看是否module::config
是您要包含的模块的子模块。如果不是,那么问题是由其他原因引起的;您能否提供有关您所做的更改的更多信息?