从食谱创建厨师数据包

Evg*_*eny 6 chef-infra chef-recipe

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

文档显示创建数据包的方式如下:

new_databag = Chef::DataBag.new
new_databag.name('unique_name')
new_databag.save
Run Code Online (Sandbox Code Playgroud)

当数据库尚不存在时,这是有效的,但如果数据库已经存在,如何使它工作,那么它将不会破坏厨师的运行?

Tim*_*ter 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
Run Code Online (Sandbox Code Playgroud)

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