![在 puppet 中,“include ‘module::config’”和“include ‘::module::config’”有什么区别?](https://linux22.com/image/798773/%E5%9C%A8%20puppet%20%E4%B8%AD%EF%BC%8C%E2%80%9Cinclude%20%E2%80%98module%3A%3Aconfig%E2%80%99%E2%80%9D%E5%92%8C%E2%80%9Cinclude%20%E2%80%98%3A%3Amodule%3A%3Aconfig%E2%80%99%E2%80%9D%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
我继承了一个包含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
是您要包含的模块的子模块。如果不是,那么问题是由其他原因引起的;您能否提供有关您所做的更改的更多信息?