在Yum Update之后找不到食谱

时间:2015-02-20 20:33:34

标签: vagrant chef centos6 aws-opsworks berkshelf

我正在尝试使用本地Vagrant和Berkshelf的Opsworks格式化食谱库来使用本文测试和本地VM:

http://dev.inventit.io/blog/aws/opsworks/vagrant/chef/berkshelf/2014/04/28/opsworks_vagrant_chef_berkshelf_tips.html

一切正常,直到我重启。在那之后,当我再次尝试使用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插件无法上传。任何帮助仍然会受到赞赏。

1 个答案:

答案 0 :(得分:3)

发现这是Vagrant 1.7.2核心代码中的已知错误:

https://github.com/mitchellh/vagrant/issues/5199

我没有得到任何简短的解决方法(删除synced_folders&amp; run vagrant reload)工作,但只是降级到流浪汉1.7.1就可以了。