java - 模块名和目录名冲突?

标签 java tomcat puppet puppet-enterprise

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

最佳答案

在这里,您可以全面了解 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. init.pp的模块learn-tomcat中,将tomcat类重命名为learn-tomcat,然后通过以下方式实例化它:

    包含 learn-tomcat

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

    包含 learn-tomcat::tomcat

关于java - 模块名和目录名冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285988/

相关文章:

java - Nimbus 外观改变了 JButtons 的颜色

java - android - 从 Activity View 中调用方法

ruby - 为什么我的 ruby​​ 代码中有单例 Puppet Arrays 字符串?

java - 为什么字符集名称不是常量?

java - Java FlowLayout 中的第 2 组组件

java - 将 Web 应用程序部署到 Apache Tomcat 的最简单方法

java - 如何从在 TomCat 中运行的 Java 应用程序读取 Apache Httpd Env 变量?

jsp - 无法解析 .jar 文件中 TagLib 的 URI

clojure - Curl Exec lein with Puppet on Centos Vagrant 没有这样的文件或目录

linux - 如何使用 Puppet 的 SHA-512 哈希设置用户密码?