1

我正在尝试获取一个要在厨师食谱中使用的大文件——它是一个大约 350mb 的数据库备份。我正在使用 wget 来获取文件,这是我的食谱:

include_recipe "apt"

include_recipe "sudo"

execute "sudo mkdir -p ~/dev/dbbackup"

execute "download most recent db backup" do
  command "sudo wget --user=theusername --password=thepassword -P ~/dev/dbbackup/ https://ourdbbackup.com/latest.psql.gz"
  timeout 86400
 end

无论我尝试了什么,我都会得到以下信息:

[2013-04-23T21:50:32+00:00] INFO: Processing execute[download most recent database backup] action run (company_dev::default line 25)
bash: line 2:  1184 Killed                  chef-solo -c /tmp/vagrant-chef-1/solo.rb -j /tmp/vagrant-chef-1/dna.json
Chef never successfully completed! Any errors should be visible in the output above. Please fix your recipes so that they properly complete.

我什至尝试给 Vagrant 打猴子补丁,这样我就可以添加 rest_timeout 选项:

Vagrant::Config.run do |config|
  config.vm.box = "precise32"
   config.vm.provision :chef_solo do |chef|
     chef.cookbooks_path = "cookbooks"
     chef.add_recipe "company_dev"
     chef.log_level = :debug
     chef.rest_timeout = 86400
  end 
end

这会产生一个 /tmp/vagrant-chef-1/solo.rb 确实有一个 rest_timeout 选项:

rest_timeout 86400

但是我仍然遇到 Chef 无法完成的相同错误。关于在没有厨师超时或其他问题停止食谱的情况下让这个大型下载工作的任何建议?当我设置机器然后从内部运行 wget 时它工作正常。非常感谢任何帮助!

4

3 回答 3

2

增加VM的内存,添加以下内容Vagrantfile

config.vm.provider :virtualbox do |vb|
   vb.customize ["modifyvm", :id, "--memory", "2048"]
end

然后重新创建虚拟机:

vagrant destroy --force && vagrant up

PS:你为什么不使用remote_file而不是做wget

于 2013-10-22T07:26:38.857 回答
0

似乎在下载文件时生成 wget 的动态控制台输出中的问题。这会导致内存不足错误。我已经通过使用“curl -O 文件名 download_url”解决了这个问题。

于 2013-04-30T18:50:46.967 回答
0

使用 wget 从外部源下载大文件也存在同样的问题。更改了要使用的命令,curl -O #{URL}并且 chef-client 运行不再因错误 runKilled 错误而失败。在 rackspace 云上使用 chef 11.4

于 2014-01-04T18:16:16.983 回答