我在/etc/puppet/modules/tipo/lib/puppet/type/customtipo.rb中有一个木偶自定义类型,其内容为:
require 'logger'
Puppet::Type.newtype(:customtipo) do
newproperty(:parametro) do
log.info("ES UN PARAMETRO")
end
end
我知道这是一个虚拟的自定义类型,但我从这类事情开始,资源放在/etc/puppet/modules/tipo/manifests/init.pp中,内容是:
class tipo {
customtipo {
"ejemplo":
parametro => "uno",
}
}
案例是"参数"或不是它没有显示消息" ES UN PARAMETRO"正如我所料。是否有其他方法可以使用自定义类型实现此目的?谢谢!
答案 0 :(得分:5)
请注意,log
命令将在Ruby运行时加载类型时运行,而不是在编译器遇到您的类型资源时运行。
另请注意,Puppet在Puppet::Util::Logging
中有一个自己的日志框架,它混合到任何类型中。您始终可以Puppet.info
或Puppet.debug
。
要了解如何调试类型代码,您应该熟悉可用的钩子。查看Puppet自己的源代码中的现有类型。你可以从这样的事情开始:
Puppet::Type.newtype(:customtipo) do
newparam(:parametro) do
# no actual validation, just logging to get started
validate do |value|
Puppet.info("parameter 'parametro' has value '#{value}'")
end
end
end
请注意,我已将newproperty
更改为newparam
,因为您不希望拥有一个名为"参数"的属性。那会让人感到困惑。