在Chef运行结束时删除文件

时间:2016-05-07 06:24:15

标签: ruby chef chef-recipe chef-solo

我想在Chef运行结束时删除文件 我使用以下file resource来实现

file "#{home_dir['data']}/file1.txt" do
  action :delete
  retries 3
  retry_delay 50
  only_if { ::File.exist? "#{home_dir['data']}/file1.txt" }
end

如果有更好的方法可以告诉我。

1 个答案:

答案 0 :(得分:0)

这是正确的,但您不需要only_if,文件资源已经在内部是幂等的。你也可能不需要retries,除非你真的希望unlink()失败(比如这是一个奇怪的网络文件系统),但它不会伤害任何东西。

编辑:如果您的食谱中有两次相同的资源类型+名称,如何避免资源克隆。

file "delete #{home_dir['data']}/file1.txt (or some other unique name)" do
  path "#{home_dir['data']}/file1.txt"
  action :delete
end

path属性默认使用名称(如果未指定),但可以单独更改它们以避免冲突。