我正在构建一个自定义类型,但无法从defaultto块访问hiera范围
module Puppet
require 'puppet/parser/functions/hiera'
newtype(:my_type) do
ensurable
newparam(:myparam) do
defaultto { Puppet::Parser::Functions.hiera('myparam') }
end
newproperty(:value) do
desc "Value of the item."
end
end
end
但我明白了
Error: undefined method `hiera' for Puppet::Parser::Functions:Module
我实际上正在使用 Puppet 3.8 和未来的解析器
作为一种解决方法,我们使用
$my_vals = hiera_hash('mytype_vals')
create_resource(my_type, $myvals, {myparam => hiera('myparam')})
这很好用,但是my_type
对象应该在目录中的任何地方实例化,并且myparam
在所有实例中都应该是相同的。所以不需要多个默认值声明。
另一种方法是放置
My_type{
myparam => hiera('myparam')
}
在节点清单中。这也可以解决问题,但是我们正在开发一个模块,而主要清单超出了我们的范围