我在根项目中有一个食谱文件夹,其中也有Vagrantfile。我只有几本食谱(初学者依赖于"apt",数据库依赖于mysql)。这些烹饪书是用巨无霸烹饪书生成的。
现在的问题是,当在Vagrantfile中设置config.berkshelf.berksfile_path时,我不知道是否将./ cookbooks /starter/ berks文件或./ comes /database/berks文件放在一起,因为这两种烹饪书都有层层依赖关系。
我尝试了多个选项,比如将这些菜谱移到烹饪书中--src并迭代其中的每个选项,并执行berks供应商.././ cookbooks ,但是没有工作,因为第二个供应商生成的烹饪书会覆盖上一个。
也尝试过每个菜谱依赖于./cookbook/-食谱/食谱,但流浪汉不认识他们。
这是我的流浪档案:
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.hostname = "chef-DK"
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--cpuexecutioncap", "67"]
v.memory = 537
end
config.berkshelf.enabled = true
config.berkshelf.berksfile_path = "./cookbooks/starter/Berksfile"
config.vm.provision :chef_solo do |chef|
chef.install = false
chef.run_list = [
'recipe[starter::default]',
'recipe[database::default]'
]
end
end
project/
├── cookbooks/
│ ├── database
│ │ ├── recipes
│ │ ├── Berksfile
│ │ └── metadata.rb
│ └── starter
│ ├── recipes
│ ├── Berksfile
│ └── metadata.rb
└── Vagrantfile============================================
starter/metadata.rb内容:
name 'starter'
maintainer 'YOUR_NAME'
maintainer_email 'YOUR_EMAIL'
license 'All rights reserved'
description 'Installs/Configures starter'
long_description 'Installs/Configures starter'
version '0.1.0'
depends 'apt', '~> 3.0.0'初学者/Berksfile的内容:
source "https://supermarket.chef.io"
metadata
cookbook 'apt', '~> 3.0.0'============================================
数据库/元数据交换的内容:
name 'database'
maintainer 'The Authors'
maintainer_email 'you@example.com'
license 'all_rights'
description 'Installs/Configures database'
long_description 'Installs/Configures database'
version '0.1.0'
depends 'mysql', '~> 6.0'数据库/Berksfile文件内容:
source "https://supermarket.chef.io"
metadata
cookbook 'mysql', '~> 6.1.3'发布于 2016-04-03 05:17:35
首先,我想澄清一下,metadata指令读取菜谱metadata.rb (也就是说,您的_Berksfile_s中的cookbook条目似乎是多余的)。
在您的示例中,您可以在主项目/目录(Vagrantfile旁边)中创建一个Berksfile文件,其内容如下:
source 'https://supermarket.chef.io'
cookbook 'database', path: 'cookbooks/database'
cookbook 'starter', path: 'cookbooks/starter'然后将其添加到Vagrantfile中。
config.berkshelf.berksfile_path = './Berksfile'我认为你的问题是你在你的流浪文件中添加了一个metadata指令,这就是为什么你要得到“没有metadata.rb”错误。
https://stackoverflow.com/questions/36376070
复制相似问题