在 puppet 中,“include ‘module::config’”和“include ‘::module::config’”有什么区别?

在 puppet 中,“include ‘module::config’”和“include ‘::module::config’”有什么区别?

我继承了一个包含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 stufffrom withinmodule::things将包含module::stuff而不是stuff

因此,使用include ::stuff是一种解决方法,告诉查找您想要顶部范围。此解决方法已记录这里


因此...查看一下您的模块结构,看看是否module::config是您要包含的模块的子模块。如果不是,那么问题是由其他原因引起的;您能否提供有关您所做的更改的更多信息?

相关内容