10

假设我想使用社区食谱(即http://community.opscode.com/cookbooks/gerrit)。所以我将使用“刀食谱网站下载”下载它并上传到我的本地厨师服务器。我需要对每个直接和瞬态依赖重复此步骤。

是否有一个命令或工具来解决/下载食谱的所有直接和临时依赖项?

4

3 回答 3

15

只是在这里扩展有关使用 ChefDk 中包含的 Berkshelf 的答案。使用 Bershelf 的指针很棒,但缺少如何部分,所以希望有人会发现这个答案有帮助。

以具有依赖关系 的wordpress食谱为例: https ://supermarket.chef.io/cookbooks/wordpress

为了将其上传到您的厨师服务器,您可以做的是创建一个 Berksfile,Berkshelf 将使用该文件作为配置来检索哪些食谱以及从何处获取它们。只需从 Supermarket berkshelf 部分复制单行

chef-dev]$ cat Berksfile
source "https://supermarket.chef.io"

cookbook 'wordpress', '~> 3.0.0'

然后做一个berks 安装

[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)

一旦食谱在本地可用,您就可以使用berks upload 上传食谱及其依赖项。在上传过程中,它也会像下载一样注意解决依赖关系。

[chef-dev]$ berks upload

另外仅供参考,食谱将被下载并在

~/.berkshelf/cookbooks/
于 2016-07-07T10:21:39.113 回答
6

您正在寻找的工具是提供命令的Berkshelfberks

它也包含在ChefDK中。

于 2014-05-16T16:26:25.930 回答
5

事情现在有点转变。Berkshelf 可能是未来要走的路,但是如果您需要现在可以使用的东西(或者您在 ChefDK 尚不支持的平台上),您应该能够执行以下操作:

knife cookbook site install gerrit
knife cookbook upload gerrit --include-dependencies

就个人而言,我发现创建包装说明书和通过 berkshelf 管理依赖项是最方便的。但我已经用上面的方法对新的食谱做了一些一次性的测试。

于 2014-05-16T19:52:52.470 回答