假设我想使用社区食谱(即http://community.opscode.com/cookbooks/gerrit)。所以我将使用'knife cookbook site download'下载并上传到我当地的厨师服务器。我需要为每个直接和瞬态依赖重复此步骤。
是否有一个命令或工具可以解析/下载食谱的所有直接和瞬态依赖关系?
答案 0 :(得分:12)
只是为了扩展这里有关使用ChefDk中包含的Berkshelf的答案。使用Bershelf的指针很棒,但缺少如何部分,所以希望有人可能会觉得这个答案很有帮助。
以具有依赖关系的 wordpress 食谱为例: https://supermarket.chef.io/cookbooks/wordpress
为了将其上传到您的厨师服务器,您可以创建一个Berks文件,Berkshelf将使用该文件作为配置,以查找要检索的Cookbook以及从何处获取它们。只需复制超市berkshelf部分的单行内容
chef-dev]$ cat Berksfile
source "https://supermarket.chef.io"
cookbook 'wordpress', '~> 3.0.0'
然后执行 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)
一旦烹饪书在本地可用,您就可以使用 berks upload 上传食谱及其依赖项。在上传过程中,它还会解决与下载类似的依赖关系。
[chef-dev]$ berks upload
另外,仅供参考,烹饪书将下载并在
中提供~/.berkshelf/cookbooks/
答案 1 :(得分:6)
答案 2 :(得分:4)
现在情况有点过渡了。 Berkshelf可能是未来的发展方向,但是如果您需要现在可以使用的东西(或者您在ChefDK尚未支持的平台上),您应该可以执行以下操作:
knife cookbook site install gerrit
knife cookbook upload gerrit --include-dependencies
就个人而言,我发现创建包装器烹饪书并通过berkshelf管理依赖项是最方便的。但是我已经用上面的东西用新的烹饪书做了一些一次性测试。