/ / Vyriešenie závislosti šéfkuchára - závislosti, šéfkuchár, šéfkuchár, kuchárka

Vyriešenie závislostí šéfkuchára - sólo kuchárskej knihy - závislosti, šéfkuchár, šéfkuchár, kuchárka

Snažím sa spustiť kuchára sólo na mojej pracovnej staniciniektoré nastavenia lokálne. Môj recept závisí na niekoľkých externých kuchárkach, ktoré špecifikujem v metadata.rb aj Berksfile. Spustenie chef-client zlyhá s chybovým hlásením uvedeným nižšie.

Ja by som rád vedel, či existuje spôsob, ako stiahnuť závislosti automaticky, keď beží chef-solo?

user@ubuntu:~/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 "you@example.com"
license "all_rights"
description "Installs/Configures test"
long_description "Installs/Configures test"
version "0.1.0"

depends "apt"

odpovede:

2 pre odpoveď č. 1

Berkshelf je populárny nástroj vo svete šéfkuchárov na automatizáciu inštalácie závislostí na kuchárke Berksfile ste spomenul, je s tým spojený). Ak už nie je, nainštalujte berkshelf.

$ gem install berkshelf

Oznámenie vo vašom solo.rb súbor, ktorý hovorí ...

cookbook_path root + "/cookbooks"

... že "tam, kde Chef chce, aby si dal závislosti. Bez Berkshelf, budete musieť použiť nôž na inštaláciu apt do tejto zložky kuchárky. (Poznámka: kuchárky / musí byť git repo ...)

$ knife cookbook site install apt

Ale pretože máte Berksfile, "budete pravdepodobne chcieť použiť príkaz nižšie v rovnakom priečinku, v ktorom je váš Berksfile ...

$ berks vendor ../

To nainštaluje závislosti pre aktuálny priečinok v nadradenom adresári. Možno budete musieť zadať iné umiestnenie v závislosti od toho, kde sa nachádza váš koreň cookbooks priečinok.

Tiež by vás mohlo zaujímať, prečo musíte určiť závislosti dvakrát, raz vo vašom Berksfile a raz vo vašom metadata.rb súboru. Ja tiež ;)


0 pre odpoveď č. 2

Na to nie je nič vstavané kuchároviako riadenie sťahovania je jednou z vecí, ktoré pre vás kuchár-klient zvláda, takže ste sa práve z tejto funkcie rozhodli. Je to dosť jednoduché urobiť skript, ktorý voláberks vendor cookbooks/ a potom cieľ kuchár-sólo v tejto zložke.