2012-07-15 23 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

「もしChef :: DataBag.list.keyなら」と思います。テストはしなければならない。その場合、新しいデータバッグはすでに存在する場合にのみ作成し、そのテストにパスします。正しい?しかし、パターンを指摘してくれてありがとう:D –

関連する問題