【问题标题】:Best way to rename a file with chef用厨师重命名文件的最佳方法
【发布时间】:2016-01-20 22:49:47
【问题描述】:

如何使用 chef 重命名文件?

chef doc我只找到了:

  • 创建
  • create_if_missing
  • 删除
  • 触摸

【问题讨论】:

    标签: chef-infra chef-recipe


    【解决方案1】:

    使用 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)}
    【解决方案2】:

    如果您需要重命名多个文件,另一种选择。检查其中一个资源以了解它是否已经运行。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多