Puppet-在Nodes.pp中设置定义的类型

Puppet-在Nodes.pp中设置定义的类型,puppet,puppet-enterprise,Puppet,Puppet Enterprise,如何覆盖nodes.pp中定义的类型?我希望能够使用节点.pp设置自定义域案例默认值不是选项 我用的是木偶6.0 以下方法不起作用。它说找不到声明的类resolv::resolv\u config。 根据这一点,它看起来像是在3.0中使用的 nodes.pp node "test001" { class { 'resolv::resolv_config': domain => "something.local", } } 模块/resolv/manifests/init.

如何覆盖nodes.pp中定义的类型?我希望能够使用
节点.pp
设置自定义
<代码>案例默认值不是选项

我用的是木偶6.0

以下方法不起作用。它说
找不到声明的类resolv::resolv\u config
。 根据这一点,它看起来像是在3.0中使用的

nodes.pp

node "test001" {
  class { 'resolv::resolv_config':
    domain => "something.local",
  }
}
模块/resolv/manifests/init.pp

class resolv {
    case $hostname {
        /^[Abc][Xyz]/: {
            resolv:resolv_config { 'US':
                domain => "mydomain.local",
            }
        }
    }
}

define resolv::resolv_config($domain){
    file { '/etc/resolv.conf':
        content => template("resolv/resolv.conf.erb"),
    }
}
决议conf.erb

domain <%= @domain %>

这里有几个问题,但导致“找不到已声明的类”错误的一个原因是您在声明已定义的类型时使用了错误的语法。您的代码应该是这样的:

node "test001" {
  resolv::resolv_config { 'something.local':
    domain => "something.local",
  }
}
文档中有声明已定义类型的示例

一旦你开始工作,你会发现另一个问题,在这个定义中

define resolv::resolv_config($domain){
    file { '/etc/resolv.conf':
        content => template("resolv/resolv.conf.erb"),
    }
}
如果您尝试声明多个
resolv::resolv_config
,将导致错误,因为它们都将尝试声明
/etc/resolv.conf
文件资源。你几乎肯定想用一个