2016-03-15 48 views
0

我得到重複聲明錯誤,當我不認爲我應該。puppet 4重複聲明

我使用下面的木偶版本

puppet --version 
4.3.2 

這是目錄結構

./manifests 
./manifests/site.pp 
./modules 
./modules/main 
./modules/main/manifests 
./modules/main/manifests/init.pp 
./modules/main/manifests/sub.pp 

site.pp

node default { 
include main 
include main::sub 
} 

init.pp

class main { 
    notice("main") 
} 

sub.pp

class main::sub { 
    notice("sub") 
} 

我運行此命令 puppet apply --modulepath ./modules manifests/site.pp

它會產生這樣的輸出:

Notice: Scope(Class[Main]): main 
Notice: Scope(Class[Main::Sub]): sub 
Notice: Compiled catalog for black-pearl.hsd1.il.comcast.net in environment production in 0.82 seconds 
Error: Duplicate declaration: Class[Main] is already declared; cannot redeclare 

回答

0

我不知道爲什麼會這樣,也許木偶有一個main已經。當我用main代替ryan時,一切都很好。

$ find . 
. 
./manifests 
./manifests/site.pp 
./modules 
./modules/ryan 
./modules/ryan/manifests 
./modules/ryan/manifests/init.pp 
./modules/ryan/manifests/sub.pp 

site.pp

node default { 
    include ryan 
    include ryan::sub 
} 
0

木偶4是有關名稱嚴格了很多,也有一些保留名稱,包括main

Reserved Class Names 
The following are built-in namespaces used by Puppet and so must not be used as class names: 

main — Puppet automatically creates a main class, which contains any resources not contained by any other class. 

https://docs.puppetlabs.com/puppet/latest/reference/lang_reserved.html 更多