puppet可以将标量和单个元素数组区分为资源属性吗?

时间:2014-10-19 09:21:00

标签: macos plist puppet boxen

有没有办法让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_parametersshould=收到的内容,在两种情况下,他们只会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世界中是不明智的或异端的;我对这个陌生的地方有点新鲜。

1 个答案:

答案 0 :(得分:0)

基础单元素特殊外壳在puppet3中已弃用,并且很长一段时间内不再是语言行为的一部分。请参阅https://tickets.puppetlabs.com/browse/PUP-1299