我通过vagrant和chef-solo运行以下收据,其目的是克隆GIT存储库:
# Recipe that includes all dependencies
include_recipe "sesame::packages"
include_recipe "sesame::git_key"
# Create folders
directory node['sesame']['sourcecode_dir'] do
owner node['sesame']['user']
group node['sesame']['group']
mode "0750"
action :create
end
directory node['sesame']['temp_dir'] do
owner node['sesame']['user']
group node['sesame']['group']
mode "0750"
action :create
end
# Creating the SSH wrapper for git
cookbook_file "#{node['sesame']['temp_dir']}/git_ssh_wrapper.sh" do
source "git_ssh_wrapper.sh"
owner node["sesame"]["user"]
group node["sesame"]["group"]
mode "0755"
end
# Clone the git repo
git node['sesame']['sourcecode_dir'] do
user node['sesame']['user']
group node['sesame']['group']
ssh_wrapper "#{node['sesame']['temp_dir']}/git_ssh_wrapper.sh"
repository node['sesame']['git_repo']
reference "master"
action :sync
timeout 9999
end
执行收据时收到的错误是:
STDERR: error: cannot run /home/vagrant/tmp/git_ssh_wrapper.sh: No such file or directory
此文件对应于应在cookbook-file资源中创建的文件。
让我感到困惑的是,如果我ssh到机器,git_ssh_wrapper.sh
文件就在那里,所以我无法理解为什么厨师抱怨它无法找到它。
如果重要,我从Windows主机运行Vagrant,但是运行厨师的机器是Ubuntu precision64。
感谢任何帮助。
最好的问候
丹尼尔
答案 0 :(得分:2)
我终于找到了问题。文件git_ssh_wrapper.sh
在那里,但没有正确执行。原因是我已经将托管食谱的git存储库克隆到Windows主机,并且在此过程中,在文件中插入了DOS行尾字符,这使得一旦厨师尝试执行它就会失败。
我必须将以下配置行添加到我的Git安装中以克隆存储库而不插入DOS行尾:
git config --global core.autocrlf input