我在/etc/apt/sources.list.d
中有一些文件,如果它们不是由大厨管理的话我希望清理它们(或者不再,即由不再在节点的run_list中的配方添加)。
我希望能够在每个厨师运行结束时检查此目录中的所有文件,并删除那些没有资源维护的文件(例如apt_repository
或{{ 1}}),即使它是template
或(skipped due to action :nothing)
答案 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
值内部检查值的事情应该有所帮助。