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ď č. 1Berkshelf 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.