ノードごとのデータ バッグを作成し、それにノード関連のアイテムを入力する次の Chef 定義があります。
define :nagios_monitor, :command => "command", :description => "", :mon_name => "" do
if not Chef::DataBag.list.key?(node[:hostname] + "_nagios_services")
new_databag = Chef::DataBag.new
new_databag.name(node[:hostname] + "_nagios_services")
new_databag.save
end
databag = Chef::DataBag.list[node[:hostname] + "_nagios_services"]
payload = {
"id" => params[:mon_name],
"command" => params[:command],
"description" => params[:description]
}
databag_item = Chef::DataBagItem.new
databag_item.data_bag(node[:hostname] + "_nagios_services")
databag_item.raw_data = payload
databag_item.save
end
クックブックに新しいリソースを追加するとうまくいきますnagios_monitor
が、リソースの削除は検出されません。コードのどこかでデータ バッグ項目を反復処理して、項目がまだ構成に存在するかどうかを確認する必要があると思いますが、これに適した場所が見つかりません。古いアイテムをデータバッグからパージする標準的な方法は何ですか?