Chef / Vagrant - 如何将omnibus安装程序指向已下载的文件?

时间:2014-09-10 17:19:16

标签: vagrant chef

每当我 vagrant destroy 然后 vagrant up 时,Vagrantfile处理就会消失并取出它上次使用的同一个老厨师。

config.omnibus.chef_version = :latest

如何避免每次下载34MB?有时我确实想从头开始重新启动,而不是使用 vagrant provision

我看了它从哪里取出厨师,自己下载到

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

通过注释掉chef_version指令我有点希望使用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指向我下载的文件也无济于事。

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

@Peter

大。听起来它会起作用,但却难以实现。我在安装脚本中有这个,我在Vagrantfile中引用它可以从 vagrant ssh

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

但不是来自Vagrantfile:

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

2 个答案:

答案 0 :(得分:3)

vagrant-omnibus插件允许您提供安装厨师的任何脚本。因此,如果您将chef安装到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,只有在缺少脚本时才运行脚本。

你也可以使用vagrant cachier插件,因此不必每次都下载,最新版本的omnibus插件挂钩到缓存中:

config.omnibus.cache_packages = true

因此,如果您的主要问题是必须重复下载,请查看vagrant-cachier

答案 1 :(得分:0)

彼得关于添加chef_version的建议使其工作正常。

这是正确答案,我只是留下了这篇文章,因为它提供了更多关于目录结构的上下文,这是我一直在与Chef docs一起努力的事情。

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

<强>详细信息:

(注意:不要看vagrant-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

来自客人,以防万一:

vagrant@vagrant:~$ 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}:"

这就是Pete发现的,它使其成功,添加了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"