Let's say I want to use a community cookbook (i.e. http://community.opscode.com/cookbooks/gerrit). So I will download it using 'knife cookbook site download ' and upload to my local chef server. I need to repeat this step for every direct and transient dependency.
Is there a single command or tool to resolve/download all direct and transient dependencies of a cookbook?
To upload a specific cookbook, go to the chef-repo directory, specify the cookbook name along with the cookbook directory as shown below. This will upload prod-db cookbook from local machine to the Chef Server. Please note that this will do the upload only if anything is changed in the cookbook locally.
On the stack's page, click Run Command and select the Update Custom Cookbooks command. Add a comment if desired. Optionally, specify a custom JSON object for the command to add custom attributes to the stack configuration and deployment attributes that AWS OpsWorks Stacks installs on the instances.
Cookbook location When the Chef recipes are executed, all cookbooks are stored on the node.
-p, --purge Use to entirely remove a cookbook (or cookbook version) from the Chef server.
Just to expand the answers here about using Berkshelf which is included in ChefDk. The pointer to using Bershelf is great but missing the how part so hopefully somebody might find this answer helpful.
Take for example the wordpress cookbook which has dependencies: https://supermarket.chef.io/cookbooks/wordpress
In order to upload this to your chef-server, what you can do is create a Berksfile which Berkshelf will use as a configuration as to what Cookbooks to retrieve and where to get them. Just copy the one-liner from the Supermarket berkshelf section
chef-dev]$ cat Berksfile
source "https://supermarket.chef.io"
cookbook 'wordpress', '~> 3.0.0'
And then do a berks install
[chef-dev]$ berks install
Resolving cookbook dependencies...
Fetching cookbook index from https://supermarket.chef.io...
Installing 7-zip (1.0.2)
Installing apache2 (3.2.2)
Installing apt (2.9.2)
Installing bluepill (2.4.3)
Installing build-essential (2.4.0)
Installing chef-sugar (3.3.0)
Installing chef_handler (1.4.0)
Installing compat_resource (12.10.6)
Installing database (5.1.2)
Installing iis (4.1.10)
Installing mariadb (0.3.1)
Installing mysql (7.2.0)
Installing mysql2_chef_gem (1.0.1)
Installing nginx (2.7.6)
Installing ohai (2.1.0)
Installing openssl (4.4.0)
Installing packagecloud (0.2.4)
Installing php (1.9.0)
Installing php-fpm (0.6.10)
Installing postgresql (4.0.6)
Installing rbac (1.0.3)
Installing rsyslog (4.0.0)
Installing runit (1.7.8)
Installing selinux (0.9.0)
Installing smf (2.2.8)
Installing tar (0.7.0)
Installing windows (1.44.1)
Installing wordpress (3.0.0)
Installing xml (2.0.0)
Installing yum (3.11.0)
Installing yum-epel (0.7.0)
Installing yum-mysql-community (0.2.0)
Once the cookbooks are available locally, you can then upload the cookbook and its dependencies using berks upload. During the upload, it will also take care in resolving dependencies similar to download.
[chef-dev]$ berks upload
Also FYI, the cookbooks will be download and available in
~/.berkshelf/cookbooks/
The tool that you are looking for is Berkshelf which provides a berks
command.
It is also included in ChefDK.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With