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



如何在nodes.pp中覆盖定义的类型?我希望能够使用nodes.pp设置自定义domainCase Default不是一种选择。

我正在使用木偶 6.0。

以下方法不起作用。它说Could not find declared class resolv::resolv_config. 根据这个答案,它看起来曾经在 3.0 中工作。

节点.pp

node "test001" {
class { 'resolv::resolv_config':
domain => "something.local",
}
}

modules/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"),
}
}

resolv.conf.erb

domain <%= @domain %>

这里有几个问题,但导致"找不到声明的类"错误的问题是您使用了错误的语法来声明定义的类型。你的代码应该是这样的:

node "test001" {
resolv::resolv_config { 'something.local':
domain => "something.local",
}
}

https://puppet.com/docs/puppet/latest/lang_defined_types.html,文档中有一些声明已定义类型的示例。

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

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

如果您尝试声明多个resolv::resolv_config,将导致错误,因为它们都将尝试声明/etc/resolv.conf文件资源。您几乎肯定想要使用file_line资源。

最新更新