模块名和目录名冲突?
Module name and directory name conflict?
我创建了一个名为 'learn-tomcat' 的模块,它有一个名为 tomcat 的 class(在 init.pp 中)。当我尝试在节点定义中包含此 class 时,它不起作用,以下所有组合都会引发错误,这些组合是:
include learn-tomcat::tomcat
include learn-tomcat
include tomcat
include ::tomcat
错误与上述组合相同:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class
现在,当我将模块目录 learn-tomcat 重命名为 tomcat 时,下面开始工作!
include tomcat
include ::tomcat
include tomcat::tomcat
现在我对一些事情感到困惑:
- 尽管 Puppet 在创建时强制模块名称为 USERNAME-MODULENAME - 是否应该在创建后重命名它?
- 我找不到相关文档,但这里到底发生了什么?
在这里,您可以全面了解名称空间和作用域在 puppet 中的工作原理。
根据文章中的例子:
name: file path:
apache <modulepath>/apache/manifests/init.pp
apache::mod <modulepath>/apache/manifests/mod.pp
apache::mod::passenger <modulepath>/apache/manifests/mod/passenger.pp
所以根据您的情况,您也可以执行以下建议之一:
在 init.pp
中的模块 learn-tomcat
中,将 tomcat
class 重命名为 learn-tomcat
,然后将其实例化为:
include learn-tomcat
将文件 init.pp
重命名为 tomcat.pp
并通过以下方式实例化它:
include learn-tomcat::tomcat
我创建了一个名为 'learn-tomcat' 的模块,它有一个名为 tomcat 的 class(在 init.pp 中)。当我尝试在节点定义中包含此 class 时,它不起作用,以下所有组合都会引发错误,这些组合是:
include learn-tomcat::tomcat
include learn-tomcat
include tomcat
include ::tomcat
错误与上述组合相同:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class
现在,当我将模块目录 learn-tomcat 重命名为 tomcat 时,下面开始工作!
include tomcat
include ::tomcat
include tomcat::tomcat
现在我对一些事情感到困惑:
- 尽管 Puppet 在创建时强制模块名称为 USERNAME-MODULENAME - 是否应该在创建后重命名它?
- 我找不到相关文档,但这里到底发生了什么?
在这里,您可以全面了解名称空间和作用域在 puppet 中的工作原理。
根据文章中的例子:
name: file path:
apache <modulepath>/apache/manifests/init.pp
apache::mod <modulepath>/apache/manifests/mod.pp
apache::mod::passenger <modulepath>/apache/manifests/mod/passenger.pp
所以根据您的情况,您也可以执行以下建议之一:
在
init.pp
中的模块learn-tomcat
中,将tomcat
class 重命名为learn-tomcat
,然后将其实例化为:include learn-tomcat
将文件
init.pp
重命名为tomcat.pp
并通过以下方式实例化它:include learn-tomcat::tomcat