Chef 包资源可以接受数据包吗?

Can the Chef package resource accept a data bag?

我有一组软件包可以很好地添加到数据包中以便全部安装。是否可以使用带有数据包的包资源?

编辑:例如 - 这就是我使用巧克力资源的方式:

workstation_apps = data_bag_item('winapps','desktop_apps')

chocolatey_package workstation_apps['apps']

这是数据包结构:

{
  "id": "desktop_apps",
  "apps": [
   "slack",
   "putty",
   "jre8",
   "python2",
   "ruby",
   "chefdk",
   "vmwarevsphereclient",
   "vmwareworkstation",
   "vagrant",
   "terraform",
   "packer",
   "visualstudiocode",
   "pushbullet",
 ]
}

这适用于 "chocolatey" 资源 - 但它是否适用于 linux (yum) 上的标准包资源?

是的,这是可能的 - 这只是代码。

您可以从数据包中提取此类信息,并将包名列表作为列表传递给 package 资源。

您并没有真正在此处传递包资源 "a data bag" 您传递的是您从 data_bag 中提取的数组。软件包提供者对您正在使用的data_bag一无所知。

您所做的与 chocolatey_package [ "slack", "putty" .... ] 没有什么不同。要执行版本,您需要将相同长度的版本数组传递给它:

package [ "slack", "putty", "jre8" ] do
  version [ nil, "1.2.3", nil ]
end

您可能应该将其作为 name, version 对存储在数据包中的散列中,然后将键和值提取为数组。交给包裹提供者。