2012-07-15 93 views
6

如何從配方創建數據包並避免該數據包已存在時發生異常?從配方創建廚師數據包

文檔顯示,創建一個數據包像這樣做:

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

這工作時,databag還不存在,但如何使其工作,如果databag已經存在,所以它不會破廚師跑?

回答

12

嘗試使用廚師:: DataBag的list方法和檢查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 

我使用它來使我的食譜更健壯,或者如果預期databag拋出一個更友好的錯誤無法在廚師服務器上找到。

+0

我認爲「如果廚師:: DataBag.list.key?」測試應該是一個除非。在這種情況下,如果它已經存在以通過該測試,那麼您只能製作新的數據庫。正確?感謝您指出模式:D – 2015-01-26 22:06:33