如何检查主厨

时间:2017-07-04 16:10:07

标签: chef chef-recipe

我在/etc/apt/sources.list.d中有一些文件,如果它们不是由大厨管理的话我希望清理它们(或者不再,即由不再在节点的run_list中的配方添加)。

我希望能够在每个厨师运行结束时检查此目录中的所有文件,并删除那些没有资源维护的文件(例如apt_repository或{{ 1}}),即使它是template(skipped due to action :nothing)

2 个答案:

答案 0 :(得分:0)

删除所有文件,然后让厨师运行。它将重新创建它“管理”的所有内容。

答案 1 :(得分:0)

我遇到了类似的问题,并在这里找到了解决该问题的食谱:https://supermarket.chef.io/cookbooks/managed_directory

本质上,菜谱将获取指定目录中所有内容的列表,并将其与厨师run_context进行比较,后者具有厨师直接管理的所有文件的列表。我的问题是管理目录中的文件,并确保仅保留厨师管理的文件。此Managed_directory Cookbook删除了不是Chef所管理的文件。如果您只想查看托管文件的列表,则需要的相关代码在这里:

managed_entries = run_context.root_run_context.resource_collection.all_resources.select do |r|
  r.identity.is_a?(String) && r.identity.start_with?("#{new_resource.path}/")
end.map(&:identity).uniq

run_context.root_run_context.resource_collection.all_resources值内部检查值的事情应该有所帮助。