2015-04-05 81 views
0

我的木偶結構如下找不到木偶在上課申請

/puppet 
    /manifests 
     /nodes 
      redis.pp 
     site.pp 
    /modules 

的site.pp類似於

class base { 
    include ml-basefw 
    include ml-users 
    include ml-filelimits 
    include repoforge 
    include epel 

class { 'ml-yumrepo': 
    base_url => "http://${puppet_server}/yumrepo" 
} 
} 
import 'nodes/*.pp' 

node default { 
    include base 
} 

當我運行

puppet apply --modulepath=/puppet/modules:/puppet/manifests --noop --debug /puppet/manifests/nodes/redis.pp 

我收到

Error: Could not find class base for redis-1.test.ml.com on node redis-1.test.ml.com 

有什麼非標準的關於我的文件佈局,排除我使用apply?

我不是傀儡模塊的維護者,所以我無法更改文件結構或佈局。

有很多相關的問題,但我無法將它們與我遇到的問題聯繫起來。

EDIT1:添加redis.pp

node /^redis-\d+(.stage)?(.test)?(.aws)?.ml.com$/ { 
include base 
include epel 

class { 'redis': 
package_ensure => '2.8.15-1.el6.remi', 
service_ensure => 'running', 
conf_bind => '0.0.0.0', 
conf_port => '6379', 
} 

firewall { '176 allow port 6379 for redis traffic': 
chain => 'INPUT', 
state => ['NEW'], 
dport => '6379', 
proto => 'tcp', 
action => 'accept' 
} 
} 
+0

你可能會顯示'redis.pp'文件的內容嗎? – kkamilpl 2015-04-07 07:47:39

回答

3

當你運行應用的傀儡對你site.pp文件,而不是會發生什麼?您的redis.pp文件中可能沒有節點定義(也不應該)。

+0

沒有'node'定義實際上是'puppet apply'的典型代表。您只需編寫特定於本地計算機的清單並直接應用。 – 2015-04-07 13:01:11

+0

...但是,應用'site.pp'似乎是在這個設置中預期的。 – 2015-04-07 15:03:08

2

這實際上看起來有點凌亂和令人費解。

你想要的是

  • 實際base模塊
  • 定義class base/puppet/modules/base/manifests/init.pp

你也應該安排您更好地體現鬆import聲明。如果您的Puppet版本已經夠用了(我認爲3.6 +),請參閱the docs

+0

就像我說的,我無法改變內容或結構。我試圖讓企業爲我的本地虛擬機工作。我們似乎對生產/舞臺中的結構沒有任何問題。 – bearrito 2015-04-07 13:44:49

+0

@ bearrito,我完全誤解了。對不起,不太有用。我建議@tthayer應用'site.pp'而不是'redis.pp'。 – 2015-04-07 15:02:09

+0

我很樂意創建一個模仿正確功能的外部文件,這些文件不會強制進行任何結構性更改,或者會影響其他工作流程,只允許我在本地工作(使用不帶puppetserver的應用程序) – bearrito 2015-04-07 15:05:17

-1

所有的拳頭,木偶都有入口清單文件。 在主模式下,條目是site.pp,並且從版本3.5中棄用了puppet deprecated,它開始自動導入指定目錄中的所有清單文件。 在應用模式下,該條目是您的命令中指定的文件。

所以它在您的生產環境中正常工作,puppet master讀取site.pp(包含類庫)並導入節點/ * .pp(redis.pp,包含節點定義)。但是當你使用「puppet apply /puppet/manifests/nodes/redis.pp」時,puppet只是讀redis.pp,沒有人告訴puppet基類在哪裏。