我正在尝试使用本地Vagrant和Berkshelf的Opsworks格式化食谱库来使用本文测试和本地VM:
一切正常,直到我重启。在那之后,当我再次尝试使用vagrant provision进行测试时,我得到了" cookbook not found"对于我的Berksfile中的内容。
以下是我的Vagrantfile的相关部分:
config.omnibus.chef_version = "11.4.0"
config.vm.box = "chef/centos-6.5"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end
config.berkshelf.enabled = true
config.vm.provision "shell", inline: <<-SHELL
rpm -Uvh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
sudo yum -y update
SHELL
config.vm.provision :chef_solo do |chef|
eval run_list
chef.json = json
end
config.vbguest.auto_update = true
这是我的Berksfile:
#!/usr/bin/env ruby
# -*- encoding : utf-8 -*-
source "https://api.berkshelf.com"
cookbook 'cookbookname', path: "cookbookname"
My Vagrant插件: vagrant-berkshelf(4.0.3) vagrant-omnibus(1.4.1) vagrant-share(1.1.3,system) vagrant-vbguest(0.10.0)
如上所述,这在重新启动之前工作正常。使用yum更新,CentOS确实从6.5升级到6.6,并在重新启动时完成。
任何帮助都将不胜感激。
跟进:
经过更多的研究后,我找到了失败点并通过手动移动一些文件来实现这一点。
在yum更新后重新启动时,guest虚拟机添加将从4.3.8更新(成功)到4.3.20。
我可以在主机上看到Berkshelf插件供应商的所有食谱:
==> default: Vendoring yum (3.5.3) to /root/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150223-32730-2aw62c-default/yum
==> default: Vendoring yum-epel (0.6.0) to /root/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150223-32730-2aw62c-default/yum-epel
我可以访问/ vagrant并查看所有共享文件。
如果我查看/ tmp / vagrant-chef我可以看到运行列表和json文件,但是cookbooks目录是空的。我再次运行配置并保持空白。
如果我将主机销售的cookbooks目录中的所有内容复制到此处并重新运行,请成功!我将继续研究为什么vagrant-berkshelf插件无法上传。任何帮助仍然会受到赞赏。
答案 0 :(得分:3)
发现这是Vagrant 1.7.2核心代码中的已知错误:
https://github.com/mitchellh/vagrant/issues/5199
我没有得到任何简短的解决方法(删除synced_folders&amp; run vagrant reload)工作,但只是降级到流浪汉1.7.1就可以了。