【问题标题】:Why is the java cookbook depending on so many other cookbooks?为什么 java 食谱依赖于这么多其他食谱?
【发布时间】:2016-07-24 18:08:11
【问题描述】:

我正在尝试使用 chef-solo 运行 open-source Java cookbook,尽管它不需要任何其他食谱,但厨师一直说缺少运行此食谱所需的食谱。首先它要求我安装 apt,然后是 homebrew,然后是 _build_essentials_。这似乎是一个永无止境的食谱清单。我做错了什么?

这就是我运行食谱的方式:

chef-solo -c solo.rb -o recipe[java] 

solo.rb 是一个配置文件,其中包含指向食谱文件夹的路径。

当我尝试运行WAS cookbook.时也会发生同样的事情

【问题讨论】:

    标签: java chef-infra chef-solo cookbook


    【解决方案1】:

    简而言之:Chef(尚)不支持conditional dependencies。这就是为什么所有提供可能使用的资源或食谱的食谱都需要声明为依赖项。

    Java 手册使用许多其他手册中的资源在不同的系统上安装 Java,例如 Windows、Linux、MacOS 等。在 Windows 下安装包,添加 APT 存储库等。

    为了允许菜谱包含食谱或使用来自另一个菜谱的资源(例如apt_repository),必须将这个指定为依赖项,以便在执行菜谱之前加载它(例如Java) .否则,Chef 将不知道此资源/食谱。

    因此,所有这些食谱都将在 Chef 运行期间加载,但不会执行它们的代码。虽然这感觉有点烦人,尤其是。在您的情况下,当您显然手动下载食谱时,当您使用 Berkshelf 进行依赖关系解析时,这并没有那么令人不安。这是强烈推荐的。

    【讨论】:

    • 这看起来很有希望。对于所有下载的食谱,我是否仍需要在 metadata.rb 文件中写入“depends 'cookbookname'”?我使用 berkshelf 下载了依赖的说明书,但当我尝试运行原始说明书时,它仍然说它们丢失了。
    • 如果您想使用 Java 食谱并使用 Berkshelf 下载依赖项,则无需更改任何内容。可能,大厨 Solo 不会拿起你的食谱。我不记得确切,如果你必须配置一些食谱路径。好多年没用过了。
    • 你知道说明书安装在哪里吗?我找不到它们,并且在说明它们安装位置的文档中找不到任何内容。感谢他们的帮助!
    • IIRC 要么你使用berks vendor,你的食谱最终在vendor/cookbooks(?),或者你运行berks install,你的食谱最终在~/.berkshelf/cookbooks。不确定,chef-solo 是否会自动从这两个位置提取它们。
    • @Swailem95 最后一个选项是 berks 包,它会制作一个包含所有需要的食谱的 tarball,然后将其设置在 http 服务器上或将其推送到您的节点并提供 url (http://或 file://) 到这个 tarball 到 chef-solo 与 --recipe-url 并且一切都应该没问题(使用正确的运行列表)
    猜你喜欢
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 2018-02-13
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多