我有一个以下 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
向食谱添加新资源但它不会检测到资源删除时,它运行良好。我想我应该在代码中的某处迭代数据包项,以检查我的配置中是否仍然存在某个项目,但我只是找不到合适的位置。从数据包中清除过时项目的规范方法是什么?