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

标签 vagrant chef-infra

每次我 vagrant destroy 然后 vagrant up 时,Vagrantfile 处理都会退出并获取与上次相同的旧 Chef。

config.omnibus.chef_version = :latest

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

我看了看它从哪里获取Chef,自己下载到

/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 指向我下载的文件也无济于事。

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

@彼得

太棒了。听起来它会起作用,但很难做到。我在 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'

最佳答案

vagrant-omnibus 插件允许您提供任何脚本来安装 chef。因此,如果您将 chef install 放入 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

关于vagrant - Chef/Vagrant - 如何将综合安装程序指向已下载的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25771376/

相关文章:

macos - 从单独的容器和主机访问容器暴露端口时遇到问题

virtualbox - 列出 Virtualbox/Vagrant 中的 natpf 规则

ruby - 在 Ruby + Chef 中检查现有目录失败

ruby /Chef : is there a way to refer to the resource 'name' and pass to a function?

jenkins - Chef : Jenkins supermarket cookbook automated job deployment

vagrant - 使用带 salt 状态的 ssh 代理转发

docker - 如何通过 Vagrant docker provisioner 登录到 docker hub

Git 使用 Chef git 资源部署主分支或特定提交或标记

virtual-machine - VBox管理 : error: Failed to create the host-only adapter

chef-infra - 点文件应该放在 Chef Recipe 集中的什么位置?