有没有办法让 Puppet 区分
my_custom_type { 'key':
value => 'blah',
}
和
my_custom_type { 'key':
value => ['blah'],
}
声明资源属性时?
Puppet::Type#set_parameters
这是一个自定义类型,所以我有完整的红宝石控制,但都显示Puppet::Property#should=
为'blah'
.
我在 Ruby 2.0.0 之上使用 Puppet 3.4.3(通过 Boxen)。我不确定更改其中任何一个版本对我来说有多容易。
上下文:我正在实现的自定义类型编辑 Apple 属性列表(.plist
文件),其中字符串和包含单个字符串元素的数组完全不同。
像这样声明属性
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 世界中是不明智的或异端的;我对这个陌生的地方有点陌生。