2016-04-02 13 views
0

Kök projesinde Vagrantfile olan bir yemek kitapları klasörüm var. Sadece yemek kitapları bir çift var (marş"apt" bağlıdır ve veritabanı mysql bağlıdır). Bu yemek kitapları, berks yemek kitabıyla üretildi.vagrant Berkshelf berksfile_path

Şimdi sorun Vagrantfile içinde config.berkshelf.berksfile_path ayarlamak için geldiğinde koyarsanız, bilmiyorum ./cookbooks/starter/Berksfile veya ./cookbooks/database/Berksfile olduğunu Her iki yemek kitabında da bağımlılık var. İkinci satıcı yemek kitapları üzerine yazılacağı oluşturulan beri

Ben yemek kitapları-src içine bu yemek kitapları taşımak ve yineleme her biri içinden ve Berks satıcı ../../cookbooks yürütmek ama işe yaramadı gibi birden çok seçenek çalıştı önceki.

Ayrıca, her yemek kitaplarının bağımlılıklarını ./cookbooks/the-cookbook/cookbooks içine de denedim ancak vagrant bunları tanımıyor. =================================

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 

:

Bu benim serseri dosyasıdır =========== başlangıç ​​/ metadata.rb arasında

içeriği:

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' 

içeriği marş/Berksfile:

source "https://supermarket.chef.io" 

metadata 

cookbook 'apt', '~> 3.0.0' 

=============================================================== veritabanı/Berksfile ait

name 'database' 
maintainer 'The Authors' 
maintainer_email '[email protected]' 
license 'all_rights' 
description 'Installs/Configures database' 
long_description 'Installs/Configures database' 
version '0.1.0' 

depends 'mysql', '~> 6.0' 

içeriği: veritabanı/metadata.rb ait

Ben berkshelf metadata talimat yemek kitabı metadata.rb okur olduğunu açıklamak istiyorum her şeyden
source "https://supermarket.chef.io" 

metadata 

cookbook 'mysql', '~> 6.1.3' 
+0

"MetaSayfa" ve "Bağımlılık" öğelerinizin çıktısını "metadata.rb" dosyalarınıza ekler misiniz? sadece alışılmadık bir bağımlılığınızın olmadığını kontrol etmek için. Muhtemelen diğer iki yemek kitabını içeren başka bir üçüncü Berksfile oluşturmanız gerekecektir. – zuazo

+0

Sadece ana soruya istediğin şeyi ekledim. Bu çift yemek kitabının bulunduğu kök klasörüne bir berksfile eklemeyi denedim ancak daha sonra berbat, berksfile yanında hiçbir metadata.rb olmadığından şikayet ederdi. Aslında çalıştığım ancak aradığım şey olmayan bir geçici çözüm denedim. Ben sadece benim başlangıç ​​/ berksfile bir öznitelik veritabanı özgeçmişine yol özniteliği ile koydum ve aynı zamanda veritabanı/berksfile tüm bağımlılıkları starter/berksfile ve nihayet satıcı başlangıç ​​yemek kitabına taşıyorum ama yine de bu aslında aradığım şey değil istediğim gibi çalış. –

cevap

0

İlk (yani , Berksfile adresindeki cookbook girişleriniz gereksiz görünüyor).

source 'https://supermarket.chef.io' 

cookbook 'database', path: 'cookbooks/database' 
cookbook 'starter', path: 'cookbooks/starter' 

Ve sonra Vagrantfile ekleyin: Eğer (yanında Vagrantfile kadar) aşağıdaki içerikle ana proje/ dizininde bir Berksfile oluşturabilir Senin durumunda

:

config.berkshelf.berksfile_path = './Berksfile' 

Ben senin sorunun addin olduğunu düşünüyorum gtalimatı sizin bergrant Berksfile ve bu yüzden "hayır metadata.rb" hatası alıyorsunuz.

+0

, 5 dosyanın içeriği burada olduğundan bu yana ne düşündüğünüzü bilmiyorum. Ekstra bir berksfile int vagrant yanındaki kök koyabildiğin için teşekkür ederiz ama hala metadata.rb hakkında hata isteyecektir Yemek kitapları için göreli yollar koyma hakkında ipucu için teşekkürler. Bence bunun için geçici bir çözüm yok ama gerçek bir çözüm yok. Bunu test edebilecek kadar küçük bir test yapıyorum? Her birine berel bağımlılıkları olan 2 yemek kitabı oluşturun ve bununla birlikte bir vagrant kutusu hazırlamaya çalışın. Sadece işe yaramıyor. –

+0

Bunu test etmeden önce test ettim ve işe yaradı. Belki kendimi düzgün bir şekilde açıklamıyorum. '1.6.5', berkshelf sürümü '4.3.0' ve 'vagrant-berkshelf' eklenti sürümü '4.1.0' vagrant sürümünü kullanıyorum. Demek istediğim, * root * Berksfile kullanmayı denediğinizde, 'metadata' komutunu eklediniz ve bu yüzden * metadata.rb * ile ilgili hatayı aldınız. Bir “metadata” talimatı eklemezseniz, * metadata.rb * gerekliliğinden şikayet etmemelidir. – zuazo

+0

Yani boş bir metadata.rb dosyanız olmalı. Denerim. –