Chef infra 使用chef重命名文件的最佳方法

Chef infra 使用chef重命名文件的最佳方法,chef-infra,chef-recipe,Chef Infra,Chef Recipe,如何使用chef重命名文件 在中,我只发现: 创造 如果缺少,请创建 删除 触碰 使用ruby_块并在内部使用::File.Rename(src,dst)。Chef framework没有文件重命名(或者至少在0.10.18之前没有文件重命名) 举个例子: ruby_block "Rename file" do block do ::File.rename(new_resource.src,new_resource.dst) end end 如果需要重命名多个文件,请选择另一

如何使用chef重命名文件

在中,我只发现:

  • 创造
  • 如果缺少,请创建
  • 删除
  • 触碰

使用ruby_块并在内部使用::File.Rename(src,dst)。Chef framework没有文件重命名(或者至少在0.10.18之前没有文件重命名)

举个例子:

ruby_block "Rename file" do
  block do
    ::File.rename(new_resource.src,new_resource.dst)
  end
end

如果需要重命名多个文件,请选择另一个选项。检查其中一个资源是否已运行

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

我只是想知道。。。这是幂等的吗?我是说。。。如果此操作再次运行并且
new\u resource.src
不再存在,会发生什么情况?它将失败。这只是一个例子。你应该保证磁盘上的文件是安全的,你不就派个警卫吗?在
中,只有当{File.exists?(new\u resource.src)}