6

如何从配方创建数据包并避免该数据包已经存在时的异常?

文档显示创建数据包是这样完成的:

new_databag = Chef::DataBag.new
new_databag.name('unique_name')
new_databag.save

这在数据包尚不存在时有效,但如果数据包已经存在,如何使其工作,以免破坏厨师运行?

4

1 回答 1

12

尝试使用listChef::DataBag 的方法并检查您的数据包名称是否存在:

require 'chef/data_bag'

unless Chef::DataBag.list.key?('unique_name')
  new_databag = Chef::DataBag.new
  new_databag.name('unique_name')
  new_databag.save
end

我使用它来使我的食谱更健壮,或者如果在 Chef 服务器上找不到预期的数据包,则会引发更友好的错误。

于 2012-07-15T09:15:01.410 回答