【问题标题】:Chef data bag creation from a recipe从食谱创建厨师数据包
【发布时间】:2012-07-14 11:20:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: chef-infra chef-recipe


    【解决方案1】:

    尝试使用 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 服务器上找不到预期的数据包,则会引发更友好的错误。

    【讨论】:

    • 我认为“如果 Chef::DataBag.list.key?”测试应该是一个除非。在这种情况下,您只有在它已经存在才能通过该测试的情况下制作新的数据包。正确的?感谢您指出模式:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多