我正在尝试完成如下所示的内容:
node 'basenode' { class { 'puppet' : disable => false, } } node 'child' inherits 'basenode' { class { 'puppet' : disable => true, } }
这给了我:
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate definition: Class[Puppet] is already defined
我怎样才能覆盖这个单一节点的设置,仍然有一个参数化的类?
原来这是一个已知的问题: https : //projects.puppetlabs.com/issues/5517
像这样做节点inheritance通常不是很好的devise。 在/etc/puppet/manifests/roles.pp的不同文件中创build抽象的“angular色”图层。 然后将parameter passing给这些类。
site.pp
import "roles.pp" import "nodes.pp"
nodes.pp
node 'webserver1' { class{"role::webserver":} } node 'webserver2' { class{"role::webserver": do_stuff => false, } } node 'db' { class{"role::db":} }
roles.pp
class role($do_stuff) { class{'foo': do_stuff => $do_stuff,} } class role::webserver($do_stuff=true) { class{'role': do_stuff => $do_stuff, } class{'apache': other_stuff => 'foo', } } class role::webserver($do_stuff=true) { class{'role': do_stuff => $do_stuff,} class{'apache': other_stuff => 'foo',} } class role::db($do_stuff=true) { class{'role': do_stuff => $do_stuff,} class{'postgres': other_stuff => 'foo',} }