Chef infra 人们如何管理Chef中的剩余或闲置资源?

Chef infra 人们如何管理Chef中的剩余或闲置资源?,chef-infra,chef-recipe,devops,chef-solo,configuration-management,Chef Infra,Chef Recipe,Devops,Chef Solo,Configuration Management,有没有一种干净的方法可以通过修改食谱来管理搁浅的资源?例如,假设我有一个配方资源,它从模板中写入一个文件,如下所示: template 'C:\dir\somefile.txt' do source 'somefile.erb' end template 'C:\some_different_dir\new_file_location.txt' do source 'sample.erb' end 然后我更新了食谱,将该文件写入不同的位置,如下所示: template 'C:

有没有一种干净的方法可以通过修改食谱来管理搁浅的资源?例如,假设我有一个配方资源,它从模板中写入一个文件,如下所示:

template 'C:\dir\somefile.txt' do
    source 'somefile.erb'
end
template 'C:\some_different_dir\new_file_location.txt' do
    source 'sample.erb'
end
然后我更新了食谱,将该文件写入不同的位置,如下所示:

template 'C:\dir\somefile.txt' do
    source 'somefile.erb'
end
template 'C:\some_different_dir\new_file_location.txt' do
    source 'sample.erb'
end
原始配方中的文件不会自动清理,是吗?所以在这一点上,
C:\dir\somefile.txt
只是被困在那里,没有被使用

我之所以在乎,是因为我们的应用程序需要大量资源,我不希望随着时间的推移,烹饪书更新占用大量磁盘空间。我也不喜欢在服务器上放置搁浅的文件,因为我不希望我们的某个应用程序意外地拾取一些文件并执行它们。我正在开发的应用程序有一系列不同的服务在各地运行,此外,我们还与合作伙伴和其他组织签订了关于遗留文件和源代码的合同

此外,当我们的应用程序使用诸如Vagrant或Terraform之类的工具进行更新时,我们也不能轻易地转向新的服务器。一旦我们的服务器启动,它们就会在那里停留很长时间。其中一些甚至不是虚拟机


感谢您的帮助。

您必须添加新资源来清理旧文件:

file 'C:\\dir\\somefile.txt' do
  action :delete
end
一旦您确定每个服务器都清理了该文件,您就可以将其从配方中删除,或者干脆将其保留。您还可以查看
zap
cookbook,它试图进行自动清理,但这确实很难以稳定的方式进行,因此它附带了一些“陷阱”,主要与嵌套执行上下文和自定义资源有关