有没有办法让Puppet区分
my_custom_type { 'key':
value => 'blah',
}
和
my_custom_type { 'key':
value => ['blah'],
}
声明资源属性时?
这是针对自定义类型的,因此我有完整的ruby-land控件,但两者都显示为Puppet::Type#set_parameters
,因此Puppet::Property#should=
显示为'blah'
。
我在Ruby 2.0.0之上使用Puppet 3.4.3(通过Boxen)。我不确定改变其中任何一个版本会有多容易。
语境:自定义类型我正在实施编辑Apple属性列表(.plist
文件),其中字符串和包含单个字符串元素的数组完全不同。< / p>
声明属性
newproperty(:value, :array_matching => :all) do
沿着
行https://docs.puppetlabs.com/guides/custom_types.html#customizing-behaviour
似乎无法更改set_parameters
或should=
收到的内容,在两种情况下,他们只会Puppet::Property#should
返回['blah']
而不是'blah'
。看起来分化在解析器级别被进一步抛出。
my_custom_type { 'key':
value => [['blah']],
}
没有任何帮助 - 结果相同。
请注意:
我意识到我可以通过在声明中提供其他信息来解决这个问题,例如:
my_custom_type { 'key':
value => ['blah'],
is_array => true,
}
或
my_custom_type { 'key':
value_array => ['blah'],
}
我想知道是否有办法捕捉数组或标量是否被宣告......尽管可以随意向我解释为什么这样做在Puppet世界中是不明智的或异端的;我对这个陌生的地方有点新鲜。
答案 0 :(得分:0)
基础单元素特殊外壳在puppet3中已弃用,并且很长一段时间内不再是语言行为的一部分。请参阅https://tickets.puppetlabs.com/browse/PUP-1299。