2015-05-17 149 views
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 

現在我感到困惑的幾件事情:

  • 雖然木偶強制執行模塊的名稱是USERNAME,MODULENAME同時創造 - 應一個創建後改名?
  • 我找不到相關的文件,但是到底發生了什麼?
+0

看起來這是一個已知的問題,木偶https://tickets.puppetlabs.com/browse/PUP -3124 –

回答

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-tomcatinit.pp,重命名tomcatlearn-tomcat,並且比例如下:

    include learn-tomcat

  2. 文件init.pp重命名爲tomcat.pp,比例如,它由:

    include learn-tomcat::tomcat