我尝试了几种不同的方式,包括创建一个新配方并通知该配方运行但我一直遇到同样的问题,即克隆的repo目录在{{1}之前不存在资源运行,所以我得到一个致命的错误。
我的问题是,我可以在文件资源尝试执行之前完成git clone完成,还是有更好的方法来执行此操作?
SN:我正在努力实现与新用户环境设置的交易 - 所以在创建新用户之后,我将从将为该用户部署的git仓库克隆一堆配置文件。file
答案 0 :(得分:4)
目前,Chef编译文件资源时,git资源尚未运行(即使尚未启动),因此文件“/home/#{user_id}/.myconfigs/.zshrc”不存在。
可能的解决方法:
这将在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
符号链接而非复制。
link "/home/#{user_id}/.zshrc" do
to "/home/#{user_id}/.myconfigs/.zshrc"
end
在编译阶段运行git资源。
git "/home/#{user_id}/.myconfigs" do
[...]
action :nothing
end.run_action :checkout