2017-02-26 73 views
-1

我在主人和兩者(測試和產品)上使用環境。該environment.conf這兩個環境(在兩個環境中相同)包含:未找到Puppet節點,未使用默認節點

modulepath = ./modules:../common/modules 
manifest = ./main.pp 

main.pp文件(也相同)包含:

include(lookup('classes', { 'merge' => 'unique' })) 
node default { } 

我現在有一個ENC shell腳本,是字面上一行,只是輸出一個節點使用的環境,因爲它也在puppet.conf中,所以這看起來不是必須的,所以我試圖刪除ENC。主機上運行puppet agent工作正常,沒有配置ENC。然而,當我嘗試一個新的節點上運行puppet agent,而對主配置的ENC,我得到這樣的迴應:

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Failed when searching for node [...]: You must set the 'external_nodes' parameter to use the external node terminus

即使是我註釋掉在兩個環境中default節點,我仍然得到這個錯誤。即使在新節點上的puppet agent命令行和/或[master]內的puppet.conf中指定環境,我也會得到相同的錯誤。

我使用Hiera,並且對於Hiera一個節點文件的新節點,但不提供節點定義(據我所知),所以我不知道如果它得到那麼遠。我希望它使用default節點並從Hiera獲得課程。

我想我的問題是爲什麼它給我這個錯誤,它不應該使用默認節點?

更新1:

這裏是puppet.conf是被分配:

[agent] 
server = puppet-prod.foo.com 

[main] 
environment = prod 

[master] 
dns_alt_names = puppet-prod,puppet-prod.foo.com 

這些都是我刪除擺脫ENC的線路:

external_nodes = /usr/local/bin/puppet-node-classifier 
node_terminus = exec 
trusted_server_facts = true 
+0

韋爾普,看起來也許木偶緩存一些配置信息,當它稱,它不會重新加載它所有。重新啓動它工作(我正在運行'--no-daemonize --verbose'來調試)。 – Josh

+1

由於問題是通過重新啓動主服務器解決的,因此我投票結束,因爲無法再生產。 –

+0

從技術上講,它是可重複的,只需啓動ENC配置的Puppet,然後在不重新啓動的情況下更改配置。不過,我很關閉它。 – Josh

回答

0

不幸的是,在這種情況下,這是一個非常愚蠢的問題;我需要做的就是重新啓動Puppet主進程。

我正在更新配置文件,當我觸摸主文件puppet.conf時,它記錄了它正在重新加載整個配置,但它顯然沒有刷新ENC配置。

驚人的我是多麼浪費時間在這個將其關閉之前,再次對...

1

You must set the 'external_nodes' parameter to use the external node terminus

這表明ENC未完全解除配置igured。

檢查線路,如這puppet.conf和刪除或註釋掉:

node_terminus = exec 
+0

對,我曾經有過,但我也刪除了這一行。我會更新整個文件。 – Josh