我正在使用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。
有什么想法吗?
答案 0 :(得分:-1)
我不知道你是否还没有找到解决方案,但是当我遇到这个问题时(甚至从另一台服务器下载)我可以通过为chef启用调试输出来“修复”它。这神奇地提高了下载速度。
简单地说
config.vm.provion :chef_solo |chef|
chef.log_level = 'debug'
[...]
end