【发布时间】:2012-07-14 11:20:21
【问题描述】:
如何从配方创建数据包并避免该数据包已经存在时的异常?
文档显示创建数据包是这样完成的:
new_databag = Chef::DataBag.new
new_databag.name('unique_name')
new_databag.save
这在数据包尚不存在的情况下有效,但如果数据包已经存在,如何使其工作,以免破坏主厨运行?
【问题讨论】:
如何从配方创建数据包并避免该数据包已经存在时的异常?
文档显示创建数据包是这样完成的:
new_databag = Chef::DataBag.new
new_databag.name('unique_name')
new_databag.save
这在数据包尚不存在的情况下有效,但如果数据包已经存在,如何使其工作,以免破坏主厨运行?
【问题讨论】:
尝试使用 Chef::DataBag 的 list 方法并检查您的数据包名称是否存在:
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 服务器上找不到预期的数据包,则会引发更友好的错误。
【讨论】: