流浪的厨师独奏没有找到存在的食谱文件

时间:2015-04-03 20:34:05

标签: git vagrant chef

我通过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。

感谢任何帮助。

最好的问候

丹尼尔

1 个答案:

答案 0 :(得分:2)

我终于找到了问题。文件git_ssh_wrapper.sh在那里,但没有正确执行。原因是我已经将托管食谱的git存储库克隆到Windows主机,并且在此过程中,在文件中插入了DOS行尾字符,这使得一旦厨师尝试执行它就会失败。

我必须将以下配置行添加到我的Git安装中以克隆存储库而不插入DOS行尾:

git config --global core.autocrlf input