2016-03-28 29 views
2

Bazı ayarları yerel olarak uygulamak için iş istasyonunda şef solo çalıştırmaya çalışıyorum. Tarifim hem metadata.rb hem de Berksfile'da belirttiğim birkaç harici yemek kitabına bağlı. Aşçı-istemci çalışması aşağıdaki hata mesajıyla başarısız oluyor.Chef-solo yemek kitabı bağımlılıklarını çözme

Şef-solo çalıştırıldığında bağımlılıkları otomatik olarak indirmenin bir yolu olup olmadığını bilmek ister misiniz?

[email protected]:~/chef-solo$ chef-solo -c solo.rb -j solo.json 

Starting Chef Client, version 12.8.1 
Installing Cookbook Gems: 
Compiling Cookbooks... 

Running handlers: 
[2016-03-28T16:32:36+00:00] ERROR: Running exception handlers 
Running handlers complete 
[2016-03-28T16:32:36+00:00] ERROR: Exception handlers complete 
Chef Client failed. 0 resources updated in 03 seconds 
[2016-03-28T16:32:36+00:00] FATAL: Stacktrace dumped to /home/user/chef-solo/chef-stacktrace.out 
[2016-03-28T16:32:36+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report 
[2016-03-28T16:32:36+00:00] ERROR: Cookbook apt not found. If you're loading apt from another cookbook, make sure you configure the dependency in your metadata 

solo.rb

root = File.absolute_path(File.dirname(__FILE__)) 
file_cache_path root 
cookbook_path root + '/cookbooks' 

solo.json

{ 
    "run_list": [ "recipe[test::default]" ] 
} 

Berksfile

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

cookbook 'apt' 
metadata 

metadata.rb

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

depends 'apt' 
+0

Bu soruyu iyi biçimlendirilmiş bir SO sorusunda ileri sürdüğümüze sevindim, aslında kendim için bir çözüme ulaşmamı sağladı! – Ninjaxor

cevap

0

Bunun için şef-solo hiçbir şey yoktur, çünkü indirme yönetimi, şef-istemcinin sizin için işlediği şeylerden biridir, bu yüzden özellikle bu özelliği devre dışı bırakabilirsiniz. berks vendor cookbooks/'u arayarak bir sarmalayıcı komut dosyası yapmak oldukça kolay ve o klasörde şef-solo'u hedefliyorsunuz.

1

Berkshelf, aşçılık dünyasının bağımlılıklarının kurulumunu otomatikleştiren popüler bir araçtır (bahsettiğiniz Berksfile bununla ilgilidir). Henüz değilse, berkshelf'i yükleyin. Şef bağımlılıkları koymak istiyor nerede solo.rb dosyada diyor hattı içinde

$ gem install berkshelf 

Bildirim ...

cookbook_path root + '/cookbooks' 

... bu. Berkshelf olmadan, o yemek kitapları klasörüne apt yüklemek için bıçak kullanmanız gerekir.

$ knife cookbook site install apt 

: (Not yemek kitapları/... bir git repo olmalıdır) Ama eğer bir Berksfile beri, sen muhtemel ...

sizin Berksfile olduğu aynı klasörde aşağıdaki komutu kullanmak isteyeceksiniz
$ berks vendor ../ 

Bu, geçerli dizinin bağımlılarını üst dizine yükleyecektir. Kökünüzün cookbooks klasörünün nerede olduğuna bağlı olarak farklı bir konum belirtmeniz gerekebilir.

Ayrıca neden bağımlılıklarınızı iki kez, bir kez ve metadata.rb dosyanızda bir kez belirtmeniz gerektiğini merak ediyor olabilirsiniz. Ben de;)