【问题标题】:Resolving and downloading chef cookbook dependencies解决和下载厨师食谱依赖项
【发布时间】:2014-05-16 15:19:44
【问题描述】:

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

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

【问题讨论】:

  • 感谢您对我的 Gerrit 食谱感兴趣 :-) 我建议您使用来自 GitHub 的状态。

标签: chef-infra knife cookbook


【解决方案1】:

只是在这里扩展有关使用 ChefDk 中包含的 Berkshelf 的答案。使用 Bershelf 的指针很棒,但缺少 how 部分,因此希望有人会觉得这个答案有帮助。

以具有依赖关系的 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/

【讨论】:

  • 非常有用,谢谢!是否还有相当于chef-solo -c solo.rb -j solo.json 的berks 用于将基础架构部署到机器上?
  • 嗨,我刚试过这个,但我收到错误,如下解决食谱依赖项...从源代码获取'wp_test'。正在从supermarket.chef.io 获取食谱索引... 在分配的时间内无法解决依赖约束。找不到需求的解决方案:wordpress (~> 3.0.0), wp_test (0.1.0)
【解决方案2】:

您正在寻找的工具是Berkshelf,它提供了一个berks 命令。

它也包含在ChefDK中。

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多