【发布时间】:2016-01-20 22:49:47
【问题描述】:
【问题讨论】:
【问题讨论】:
使用 ruby_block 并在内部使用 ::File.Rename(src,dst)。 Chef 框架没有文件重命名(或者至少在 0.10.18 之前没有)。
只是一个例子:
ruby_block "Rename file" do
block do
::File.rename(new_resource.src,new_resource.dst)
end
end
【讨论】:
new_resource.src 不再存在时会发生什么?
only_if { File.exists?(new_resource.src)}
如果您需要重命名多个文件,另一种选择。检查其中一个资源以了解它是否已经运行。
ruby_block "Rename file" do
block do
::Dir.glob("*/*.src").each {|i| File.rename(i, i.gsub(/(.*).src/,'\\1.dst'))};
end
not_if {File.exists?("new_resource.dst")}
end
【讨论】: