2

ノードごとのデータ バッグを作成し、それにノード関連のアイテムを入力する次の 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が、リソースの削除は検出されません。コードのどこかでデータ バッグ項目を反復処理して、項目がまだ構成に存在するかどうかを確認する必要があると思いますが、これに適した場所が見つかりません。古いアイテムをデータバッグからパージする標準的な方法は何ですか?

4

1 に答える 1

0

バッグ全体をドロップしてから完全に再生成することで、同様の問題を解決できて幸運でした。ただし、これは、ライターが 1 人しかいない場合にのみ機能します。

于 2013-09-27T03:17:27.407 に答える