厨师食谱等待git克隆完成

时间:2013-01-03 05:41:03

标签: chef chef-recipe

我尝试了几种不同的方式,包括创建一个新配方并通知该配方运行但我一直遇到同样的问题,即克隆的repo目录在{{1}之前不存在资源运行,所以我得到一个致命的错误。

我的问题是,我可以在文件资源尝试执行之前完成git clone完成,还是有更好的方法来执行此操作?

SN:我正在努力实现与新用户环境设置的交易 - 所以在创建新用户之后,我将从将为该用户部署的git仓库克隆一堆配置文件。

file

1 个答案:

答案 0 :(得分:4)

检查Anatomy of a Chef Run

目前,Chef编译文件资源时,git资源尚未运行(即使尚未启动),因此文件“/home/#{user_id}/.myconfigs/.zshrc”不存在。

可能的解决方法:

  1. 这将在git使用FileUtils创建文件后复制该文件。

    ruby_block "create /home/#{user_id}/.zshrc" do
      block do
        ::FileUtils.copy("/home/#{user_id}/.myconfigs/.zshrc", "/home/#{user_id} /.zshrc") unless ::File.exists? "/home/#{user_id}/.zshrc" 
      end
    end
    
  2. 符号链接而非复制。

    link "/home/#{user_id}/.zshrc" do
      to "/home/#{user_id}/.myconfigs/.zshrc"
    end
    
  3. 在编译阶段运行git资源。

    git "/home/#{user_id}/.myconfigs" do
      [...]
      action :nothing
    end.run_action :checkout