是否有通过食谱修改管理搁浅资源的简洁方法?例如,假设我有一个配方资源,可以从模板中写入文件,如下所示:
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等内容更新时,我们也无法轻松进入我们启动新服务器的方向。一旦我们的服务器开始运转,它们就会存在很长时间。其中一些甚至不是虚拟机。
感谢您的帮助。
答案 0 :(得分:2)
您必须添加新资源来清理旧文件:
file 'C:\\dir\\somefile.txt' do
action :delete
end
一旦你确定每个服务器都清理了文件,你可以从配方中删除它,或者只是保留它。您还可以查看zap
食谱,它尝试进行自动清理,但这很难以稳定的方式进行,因此它带有一些“陷阱”,主要与嵌套执行上下文和自定义资源有关。