我可以在Puppet site.pp文件中编写重复的节点块吗?

时间:2014-03-19 12:00:57

标签: puppet

我正在尝试在site.pp文件中编写重复的节点块。这是我从Java代码生成的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",
     }
    }

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果你需要处理数百个资源和数千个盒子,你应该关心做一个好的设计和建模。将您的资源放入类中,然后将类放入更通用的类中,然后将类放入框中。并使用hiera或参数化类或两者来更改资源

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" :
 }
}

如果您正在使用Java生成清单,那么您也应该为Java类建模。