私は現在、Chef レシピに取り組んでおり、コードの結果に応じた情報でデータ バッグを更新する必要があります。基本的に、データバッグを成功または失敗で更新する必要があります。
コードは次のようになります。
begin
node[:fileDeploy].each do |f|
if f[:deploy]
cookbook_file "#{f[:subdirectory]}/#{f[:targetFilename]}" do
owner users['tomcatUser']
group users['tomcatGroup']
mode "0755"
cookbook node[:cookbookName]
source "#{f[:sourceFilename]}"
end
end
end
# Update data bag: succeeded
rescue Chef::Exceptions::FileNotFound => e
# Update data bag: failed
end
問題は、不足しているファイルがあってもレスキュー ブロックが実行されず、それに応じてデータ バッグが更新されないことです。そのため、サーバーでコマンド sudochef-client を実行すると、例外が発生しますが、ブロックChef::Exceptions::FileNotFound
によって処理されません。rescue
それは理にかなっていますか?何か助けはありますか?