添加一些调试到木偶自定义类型

时间:2015-10-05 14:52:52

标签: ruby 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",
        }
}

案例是"参数"或不是它没有显示消息" ES UN PARAMETRO"正如我所料。是否有其他方法可以使用自定义类型实现此目的?谢谢!

1 个答案:

答案 0 :(得分:5)

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

另请注意,Puppet在Puppet::Util::Logging中有一个自己的日志框架,它混合到任何类型中。您始终可以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,因为您希望拥有一个名为"参数"的属性。那会让人感到困惑。