如何从配方创建数据包并避免在数据包已存在时出现异常?
文档显示创建数据包的方式如下:
new_databag = Chef::DataBag.new
new_databag.name('unique_name')
new_databag.save
当数据库尚不存在时,这是有效的,但是如果数据库已经存在,那么如何使它工作,这样就不会破坏厨师的运行?
答案 0 :(得分:12)
尝试使用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服务器上找不到预期的数据字节,则会抛出更友好的错误。