使用Vagrant时为Chef预缓存下载文件

4
我正在使用Vagrant和Chef自动设置开发节点,需要安装Oracle Java。不幸的是,从Oracle网站下载Oracle Java已经无法自动完成。因此,java::oracle配方要求您设置一个可通过HTTP访问的私有存储库,并最好使用角色覆盖虚拟URL来解决这个问题。我想将已下载的JDK捆绑到我的Vagrantfile中,以便可以自动安装而不必在内部web服务器上发布JDK。是否有一种方法可以将文件注入到chef-solo的文件缓存中,以便在安装配方时找到它?看起来,chef-solo配方不支持file_cache_path属性。我曾经考虑将其设置为由Vagrant共享的文件夹,但似乎不起作用。

我认为目前的Vagrant版本无法实现这一点。我已经修改了chef provisioner以实现此功能,但在提交pull request之前需要进行清理。与此同时,如果有人找到了不需要打补丁的方法,我会接受它作为答案。 - Edward Dale
我很高兴接受这样的拉取请求到Vagrant中。 :) 发布它,我会进行审核。 - Mitchell
@Mitchell 我会尽力在周末把它整理好并提交。 - Edward Dale
创建一个特殊的食谱,将您想要安装Java的文件放在其中(放入files/default/目录中)。然后使用cookbook_fileexecute从食谱运行Java安装程序。 - Draco Ater
2个回答

0
使用社区的Java菜谱并进行设置。
override['java']['oracle']['accept_oracle_download_terms'] = true

这是我在所有服务器上安装Java的方法。


0
我们针对一些安装的软件包解决这个问题的方法是创建一个本地 squid 代理服务器,用于 Vagrant 启动的实例。
第一次下载软件包时,它会按预期运行。但在后续运行中,本地缓存会使得运行速度更快。
当然,这并不能解决你在 Oracle JDK 方面的特定问题,因为你无法将其作为配方的一部分下载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接