向人偶自定义类型添加一些调试

Add some debug to a puppet custom type

我在 /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",
        }
}

情况是 "parametro" 与否,它没有像我预期的那样显示消息 "ES UN PARAMETRO"。有没有其他方法可以使用自定义类型来实现这一点?谢谢!

请注意,log 命令将 运行 当您的类型在 Ruby 运行 时间加载时,而不是当编译器遇到您的类型的资源时。

另请注意,Puppet 在 Puppet::Util::Logging 中有自己的日志记录框架,该框架混合到 any 类型中。你总是可以 Puppet.infoPuppet.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,因为您 想要一个名为 [=29] 的 属性 =].那会很混乱。