2

我创建了一个名为“learn-tomcat”的模块,它有一个名为 tomcat 的类(在 init.pp 中)。当我尝试将此类包含在节点定义中时,它不起作用,以下所有组合都会引发错误,组合是:

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 - 创建后是否应该重命名它?
  • 我找不到相关文档,但这里到底发生了什么?
4

1 回答 1

3

在这里,您可以全面了解名称空间和范围如何在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

因此,在您的情况下,您还可以执行以下建议之一:

  1. 在模块learn-tomcatin 中init.pp,将tomcat类重命名为learn-tomcat,然后通过以下方式对其进行实例化:

    include learn-tomcat

  2. 将文件重命名init.pptomcat.pp并通过以下方式实例化它:

    include learn-tomcat::tomcat

于 2015-05-17T11:44:09.603 回答