我正在尝试在大厨食谱中使用一个大文件 - 这是一个大约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时,它工作正常。任何帮助非常感谢!
答案 0 :(得分:2)
增加VM的内存,将以下内容添加到Vagrantfile
:
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
end
然后重新创建VM:
vagrant destroy --force && vagrant up
PS:为什么不使用remote_file
代替wget
答案 1 :(得分:0)
看起来像动态控制台输出中的问题,在下载文件时生成wget。这会导致内存不足错误。 我已经通过使用“curl -O filename download_url”解决了这个问题。
答案 2 :(得分:0)
使用wget从外部源下载大文件时遇到同样的问题。将命令更改为使用curl -O #{URL}
,并且Chef-client运行不再失败,并显示错误runKilled错误。在rackspace云上使用Chef 11.4