虚拟盒上的厨师。客人从主机下载非常慢

时间:2016-01-18 20:00:14

标签: download vagrant chef fileserver

我正在使用vagrant和chef来构建VM。

主持人:OSX 10.9.5
audrey:ubuntu2 jluc $ chef -v
Chef Development Kit版本:0.10.0
chef-client版本:12.5.1
berks版本:4.0.1
厨房版:1.4.2

audrey:ubuntu2 jluc $ vagrant -v
流浪者1.8.1
audrey:ubuntu2 jluc $ vagrant插件列表
vagrant-berkshelf(4.1.0)
vagrant-omnibus(1.4.1)
vagrant-share(1.1.5,system)

Virtualbox:5,但之前在4上相同。

访客:Ubuntu 14.04

背景:我正在使用 alien 来安装Oracle rpm。但是,您不能只是将客户端指向某个地址的URL或包,您需要从Oracle下载rpms,接受条件,然后将文件提供给客户端安装。有2个rpms,一个30MB,一个640KB。

我这样做是通过在主机上启动一个http服务器,在端口9003上。

问题:

在厨师运行中的下载/远程文件时间是5-20 分钟,而我可以在5-15 秒内从客户端中取出/卷曲它们

详细说明:

以下主厨代码处理这些文件:

ip = node[:network][:default_gateway]

simplehttp_port=node[:basedjango][:port_host_fileserver]
fn_basic = "oracle-instantclient12.1-basiclite-12.1.0.2.0-1.x86_64.rpm"

execute 'download_basic' do
  cwd "/tmp"
  command "wget  http://#{ip}:#{simplehttp_port}/#{fn_basic} "
  not_if do ::File.exists?(fnp_basic) end
end

#I have also used this instead, just as slow...
remote_file fnp_basic do

  uri = "http://#{ip}:#{simplehttp_port}/#{fn_basic}"

  not_if do ::File.exists?(fnp_basic) end

  mode '0755'
  action :create
end

我的问题是,我可以将游戏者ssh到游客中,并在5到15秒内完成任务。从厨师食谱中,我每次都要看5-20分钟(有条件保护,以避免下载,如果它存在)。

==> default: [2016-01-18T11:13:58-08:00] INFO: file[/etc/profile.d/ORACLE_HOME.sh] mode changed to 755
==> default:       
==> default: - change mode from '' to '0755'
==> default:       
==> default: - change owner from '' to 'root'
==> default:       
==> default: - change group from '' to 'root'
==> default:     
==> default:  (up to date)
==> default: Recipe: basedjango::oracle
==> default:   
==> default: * execute[download_basic] action run

!!! 11:13至11:28 =>这里15分钟。

==> default: [2016-01-18T11:28:04-08:00] INFO: 

execute[download_basic] ran successfully
==> default:     
==> default: - execute wget  http://10.0.2.2:9003/oracle-instantclient12.1-basiclite-12.1.0.2.0-1.x86_64.rpm 
==> default:   * execute[install_basic] action run

这是同一个命令,通过vagrant ssh手动执行。在这种情况下大约2秒钟。

vagrant@vagrant:/tmp$ wget  http://10.0.2.2:9003/oracle-instantclient12.1-basiclite-12.1.0.2.0-1.x86_64.rpm
--2016-01-18 11:50:40--  http://10.0.2.2:9003/oracle-instantclient12.1-basiclite-12.1.0.2.0-1.x86_64.rpm
Connecting to 10.0.2.2:9003... connected.
HTTP request sent, awaiting response... 200 OK
Length: 30940809 (30M) [text/html]
Saving to: ‘oracle-instantclient12.1-basiclite-12.1.0.2.0-1.x86_64.rpm’

100%[====================================================================================================================================================================================>] 30,940,809  17.8MB/s   in 1.7s

2016-01-18 11:50:41 (17.8 MB/s) - ‘oracle-instantclient12.1-basiclite-12.1.0.2.0-1.x86_64.rpm’ saved [30940809/30940809]

remote_file 资源的行为方式相同,所以起初我认为它有问题或我使用它的方式。 rpms不是来自Vagrant共享目录,btw。

有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

我不知道你是否还没有找到解决方案,但是当我遇到这个问题时(甚至从另一台服务器下载)我可以通过为chef启用调试输出来“修复”它。这神奇地提高了下载速度。

简单地说

config.vm.provion :chef_solo |chef|
  chef.log_level = 'debug'
  [...]
end