2014-03-19 56 views
0

我正在嘗試在site.pp文件中編寫重複的節點塊。我從Java代碼生成的這個site.pp文件。當我測試'puppetd ​​--test'時,我沒有在客戶端上獲得其他節點塊更改。我可以在Puppet site.pp文件中寫入重複節點塊嗎?

site.pp

node "puppetclient1.domain.com" { 
    file { "twc-bind-9.9.4-0.noarch.rpm" : 
      source => "puppet:///files/modules/BIND/twc-bind-9.9.4-0.noarch.rpm", 
    } 
    } 
    node "puppetclient1.domain.com" { 
    package { "twc-bind" : 
      source => "/opt/test/files/twc-bind-9.9.4-0.noarch.rpm", 
      provider => "rpm", 
      ensure => "latest", 
    } 
    } 
    node "puppetclient1.domain.com" { 
    service { "named" : 
      subscribe => File["/opt/test/files/twc-bind-9.9.4-0.noarch.rpm"], 
      ensure => "running", 
    } 
    } 
+0

你爲什麼想這樣做? – iamauser

+0

因爲我有1000個節點和100個文件,包和服務。所以,我想如果我這樣做,它會減少文件大小。我可以給 「節點」domain1「,」domain2「,... {文件或PKG或SRVC信息> }'。如果我這樣做,我會得到,節點塊的數目=沒有文件+沒有任何的pkgs + no.of srvc。否則,我必須爲重複文件,pkgs和srvc信息的1000個節點寫入1000個塊。 – nagesh

回答

0

我敢肯定,木偶將對陣它找到的第一個節點。

你需要使你的Java代碼有點聰明,並添加資源的所有成一個單一的節點,即

node "puppetclient1.domain.com" { 

file { "twc-bind-9.9.4-0.noarch.rpm" : 
     source => "puppet:///files/modules/BIND/twc-bind-9.9.4-0.noarch.rpm", 
} 

package { "twc-bind" : 
     source => "/opt/test/files/twc-bind-9.9.4-0.noarch.rpm", 
     provider => "rpm", 
     ensure => "latest", 
} 

service { "named" : 
     subscribe => File["/opt/test/files/twc-bind-9.9.4-0.noarch.rpm"], 
     ensure => "running", 
} 
} 

或者另一種選擇是使用node inheritance

+0

感謝您的回覆。是的,最初我只是這樣寫而已。如果您發現任何其他解決方案,請再次回覆。 – nagesh

0

如果你不得不面對數百個資源和數千個盒子,你應該關心做一個好的設計和建模。把你的資源放入類中,然後將類放入更普通的類中,然後將類放入框中。和使用hiera或參數類或兩者如果您使用的是Java生成艙單更改資源

class twc-bind { 
file { "/opt/test/files/twc-bind-9.9.4-0.noarch.rpm" : 
     source => "puppet:///files/modules/BIND/twc-bind-9.9.4-0.noarch.rpm", 
} 
package { "twc-bind" : 
     source => "/opt/test/files/twc-bind-9.9.4-0.noarch.rpm", 
     provider => "rpm", 
     ensure => "latest", 
} 
service { "named" : 
     ensure => "running", 
} 
File["twc-bind-9.9.4-0.noarch.rpm"]->Package["twc-bind"]->Service["named"] 
} 
node "puppetclient1.domain.com" { 
class { "twc-bind" : 
} 
} 

,你shuold Java類太建模。

相關問題