2014-09-10 44 views
3

每次我流浪汉破坏然后无业游民了的Vagrantfile处理出去,并获取同样的老厨师它做最后一次。厨师/流浪汉 - 如何将omnibus安装程序指向已下载的文件?

config.omnibus.chef_version = :latest 

如何避免每次下载34MB?有时我确实想重新开始,而不是使用流浪狗条款

我看着它从获取的厨师,下载了它自己

/Users/jluc/kds2/chef/vagrant/chef_11.14.6-1_amd64.deb 

通过注释掉chef_version directiveI是有点希望利用install_url,但似乎高兴与我的文件,它不会。

#config.omnibus.chef_version = :latest 
config.omnibus.install_url = '/Users/jluc/kds2/chef/vagrant/chef_11.14.6-1_amd64.deb' 

跳过install_url并将chef_version指向我下载的文件也没有帮助。

该文档(https://github.com/schisamo/vagrant-omnibus)表示install_url应该是安装脚本。如何使用普通安装脚本,但使用我下载的文件?

@Peter

太好了。听起来像它会起作用,但无法得到它。我有这个安装脚本中的我在Vagrantfile引用它从游民SSH

#!/usr/bin/env bash 
dpkg --install /vagrant/chef_11.14.6-1_amd64.deb 

工作,但不能从Vagrantfile:

config.omnibus.install_url = '/vagrant/utilities/chefinstall.sh' 
+0

安装URL在您的主机或远程URL上是相对​​的。 – 2014-09-10 20:09:07

+0

如果您将上面的内容更改为我在答案中更改的位,应该可以工作! :) – 2014-09-11 10:28:53

回答

3

的无业游民,综合性的插件可以让你给任何脚本安装厨师。所以,如果你把厨师安装到其中Vagrantfile是文件夹,您可以指向一个安装脚本,看起来像:

#!/usr/bin/env bash 
dpkg --install /vagrant/chef_11.14.6-1_amd64.deb 

把它放在同一个文件夹作为Vagrantfile。然后在你的Vagranfile中:

config.omnibus.chef_version = '11.14.6' 
config.omnibus.install_url = './chefinstall.sh' 

这应该有效。它足够聪明,它会检查盒子上安装了哪个版本的Chef,并且只有在丢失时才运行脚本。

您也可以使用流浪汉方言cachier插件,这样就不必每次下载的综合性插件钩子的最新版本到缓存:

config.omnibus.cache_packages = true 

因此,如果您主要关注的是不必重复下载,结账vagrant-cachier

+0

我目前正在使用手机,但我会在我的机器上进行下一次编辑时指出编辑的意思 – 2014-09-10 18:21:58

+0

也可能是您在Vagrantfile中的订购意味着主厨在安装omnibus软件包之前就已经进行了规定。你能不能发布你的整个Vagrant文​​件?如果你愿意的话,我会看看我是否能够正常工作? :) – 2014-09-11 18:24:03

0

彼得的关于添加chef_version的建议使它工作得很好。

这是正确的答案,我只是留下这写,因为它给目录结构更多的上下文,这是我总是与厨师文档斗争。

config.omnibus.chef_version = '11.14.6' 
config.omnibus.install_url = install_url 

详情:

(注:不看流浪汉,方言cachier因为我想限制我的非核心依赖(Opscode公司)食谱/插件获取Berkshelf稳定带我更好OSX Mavericks每周的一部分)。

安装脚本,chefinstall.sh:

#!/usr/bin/env bash 
dpkg --install /vagrant/chef_11.14.6-1_amd64.deb 

这是我的设置,目录明智

|-- Vagrantfile 
|-- chef_11.14.6-1_amd64.deb 
|-- utilities 
| |-- chefinstall.sh 

从主机,这是权限的样子:

audrey:utilities jluc$ ls -l chefinstall.sh 
-rwxr-xr-x 1 jluc staff 68 10 Sep 12:19 chefinstall.sh 

并从客人,以防万一:

[email protected]:~$ ls -l /vagrant/utilities/chefinstall.sh 
-rwxr-xr-x 1 vagrant vagrant 68 Sep 10 12:19 /vagrant/utilities/chefinstall.sh 

这是我放在Vagrantfile中,直到我按照彼得的建议添加了chef_version才成功。

#relative (to Vagrantfile) on host 
install_url = './utilities/chefinstall.sh' 

puts "jlp:install_url:#{install_url}:" 

这是皮特发现,使得它的工作,加入chef_version:

config.omnibus.chef_version = '11.14.6' 
config.omnibus.install_url = install_url 

的chef_version之前,我发现这个技巧是工作为好。

config.vm.provision :shell, :inline => "sudo /vagrant/utilities/chefinstall.sh"