Properties 根据配方代码发送到厨师资源的属性数量可变

Properties 根据配方代码发送到厨师资源的属性数量可变,properties,resources,chef-infra,Properties,Resources,Chef Infra,我希望根据属性中可用的值向资源传递数量可变的属性 这是我想做的一个想法。关于属性的if逻辑是我想要的,但不确定是否有可能做到这样 RPM=[ { “名称”:“名称”, “版本”:“版本”, “释放”:“释放”, “拱门”:“拱门” }, { “名称”:“名称” } ] RPM.每个do |包|信息| 自定义软件包“安装”+软件包信息[“名称”]do 名称包_信息['name'] 如果已定义?(package_info['version'])#仅在该属性可用时传递该属性 版本包信息['versio

我希望根据属性中可用的值向资源传递数量可变的属性

这是我想做的一个想法。关于属性的if逻辑是我想要的,但不确定是否有可能做到这样

RPM=[
{
“名称”:“名称”,
“版本”:“版本”,
“释放”:“释放”,
“拱门”:“拱门”
},
{
“名称”:“名称”
}
]
RPM.每个do |包|信息|
自定义软件包“安装”+软件包信息[“名称”]do
名称包_信息['name']
如果已定义?(package_info['version'])#仅在该属性可用时传递该属性
版本包信息['version']
结束
如果已定义?(package_info['release'])#仅在该属性可用时传递该属性
版本包信息['release']
结束
如果已定义?(package_info['arch'])#仅在该属性可用时传递该属性
版本包_信息['arch']
结束
结束
结束
Chef中有类似的功能吗?

您可以使用,它调用第一个参数标识的方法,并将指定的任何其他参数传递给它

RPM=[
{
“名称”:“名称”,
“版本”:“版本”,
“释放”:“释放”,
“拱门”:“拱门”
},
{
“名称”:“名称”
}
]
RPM.每个do |包|信息|
自定义_包“安装${package_info['name']}”执行
软件包信息。每个do键、值|
发送(键、值)
结束
结束
结束